在perl中Crypt::Blowfish加解密的例子:

如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl
 
use strict;
use warnings;
 
use Crypt::Blowfish;
 
my $key = '123456';
my $content = 'i love you selina!';
 
 
if (length($key) % 8 != 0) {
    $key .= "\000"x(8 - length($key) % 8); 
}
 
my $ci = new Crypt::Blowfish $key;
 
### encrypt:
my $plain = $content;
my $encryp;
while(my $p = substr($plain, 0, 8)) {
    my $len = length($p);
    if ($len % 8 != 0) {
        $p .= "\000"x( 8 - $len % 8); 
    }   
    $encryp .= $ci->encrypt($p);
    if (length($plain) > 8) {
        $plain = substr($plain, 8)  
    } else {
        last;
    }   
}
 
### decrypt:
my $decryp;
$plain = $encryp;
while(my $p = substr($plain, 0, 8)) {
    my $len = length($p);
    if ($len % 8 != 0) {
        $p .= "\000"x( 8 - $len % 8); 
    }   
    $decryp .= $ci->decrypt($p);
    if (length($plain) > 8) {
        $plain = substr($plain, 8)  
    } else {
        last;
    }   
}
 
print "encrypt: ", unpack("H*", $encryp), "\n";
print "decrypt: ", unpack("H*", $decryp), "\n";
print "decrypt: ($decryp)\n";

输出如下:

encrypt: f387ab6368b07639ed9adf97b2527fac6af3c55dd58bdce2
decrypt: 69206c6f766520796f752073656c696e6121000000000000
decrypt: (i love you selina!)

Leave a Reply