【问题标题】:How to encrypt and decrypt a specific column in a file by using Perl?如何使用 Perl 加密和解密文件中的特定列?
【发布时间】:2014-06-19 18:15:48
【问题描述】:

我有如下的日志文件,

NAME    ID      LOCATION
aa      12      in
bb      13      freak
cc      14      test

我想对“LOCATION”字段进行加密和解密。如何通过使用 Perl 中的任何加密模块来做到这一点?

由于我是 Perl 新手,请帮助我。

【问题讨论】:

    标签: perl encryption md5 sha


    【解决方案1】:

    使用Crypt::CBC

    一个示例脚本

    #!/usr/bin/perl
    use strict;
    use Crypt::CBC;
    
    unless (scalar @ARGV == 3) {
        die "Usage: $0 encrypt|decrypt|en|de \$mysecretkey \$file_to_dencrypt";
    }
    
    my $type = shift @ARGV;
    my $key = shift @ARGV;
    my $file = shift @ARGV;
    
    die "The first ARGV should be one of de, en, encrypt, decrypt" if ($type !~ /^(en|de)(crypt)?$/);
    die "the file $file is not existence" unless (-f $file);
    
    my $DEBUG = 1;
    
    print "type is $type, key is $key, file is $file\n" if $DEBUG;
    
    my $cipher = Crypt::CBC->new(
        -key    => $key,
        -cipher => 'Blowfish'
    );
    
    local $/;
    open(FH, $file) or die $!;
    flock(FH, 2);
    my $data = <FH>;
    close(FH);
    
    my ($save_data, $save_file);
    if ($type =~ /^en(crypt)?$/) {
        $save_data = $cipher->encrypt($data);
        $save_file = $file . '.encrypt';
    } else {
        $save_data = $cipher->decrypt($data);
        $save_file = $file . '.decrypt';
    }
    
    open(FH, '>', $save_file) or die $!;
    print FH $save_data;
    close(FH);
    
    if (-e $save_file) {
        print "$type file $file to $save_file OK\n";
    } else {
        print "failed without reason\n";
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2011-05-15
      相关资源
      最近更新 更多