| 
 
     
- UID
 - 2031431 
 - 威望
 - 27 点 
 - 金钱
 - 2 金币 
 - 点卡
 - 10 点 
 
  | 
1#
 
发表于 2003-12-10 02:11
 |  只看该作者
 
 
 
 [转帖]Blowfish模块
作者:hoowa  
 
 
总在这里问东西也不能不给这里的朋友点东西  
这是我刚刚做的,给你资料你整理一下就可以用了:)  
 
Blowfish是一个强壮的可变长度由8个字节到56个字节(448位钥匙)的加密技术。  
只有在双方持有相同的钥匙情况下才有可能解密数据。  
他照比DES算发具有更高的安全性(目前无法破解)。  
而且他的加密速度是最快的!  
这里不讲他如何做的算法。我们只讲Crypt::Blowfish如何使用。  
 
安装:  
win32系统:  
输入ppm命令,然后输入install Crypt::Blowfish回车等待安装结束,或search blowfish查看列表。  
 
Linux下请到www.cpan.org下载模块,编译安装需要gcc  
 
此模块是使用的最小8字节长度,最大56字节长度,在编写钥匙的时候如果不符合这个范围那么就将出现错误。  
在加密的时候,需要将所加密的字符穿分割成为多个8字节长度的字符串,如果不够8字节可以填充空格等特殊字符。  
 
以下是举例:- #!/usr/bin/perl 
 - use Crypt::blowfish; #加载模块 
 - #需要加密的资料 
 - $data = qq~欢迎光临www.ilcatperl.org这里是Perl的天堂 
 - 欢迎喜欢Perl 
 - 如果你觉得Perl不行,那就是你水平太臭,回家看孩子玩吧~; 
 - #构造对象 
 - my $fish = new Crypt::Blowfish 'this is my key'; # 8 bytes < Key > 56 bytes 
 - #编码 
 - @data = &block($data); #将数据以8个字节块化,如果最后不够补充空格 
 - foreach (@data) { 
 -    $encode .= $fish->encrypt($_); 
 - } 
 - #解码 
 - @data = &block($encode); #将数据以8个字节块化,如果最后不够补充空格 
 - foreach (@data) { 
 -    $decode .= $fish->decrypt($_); 
 - } 
 - #块化子程序 
 - sub block 
 - { 
 -    my ($string) = @_; 
 -    my (@blocks,$last_length,$nu,$ad); 
 -    my @blocks = unpack("a8 "x(int(length($data)/) . "a*", $string); 
 -    $last_length = length($blocks[$#blocks]); 
 -    if (($nu = 8 - $last_length) > 0) { 
 -       for (my $i=1;$i<=$nu ;$i++) { 
 -          $ad .= ' '; 
 -       } 
 -    } 
 -    $blocks[$#blocks]= $blocks[$#blocks].$ad; 
 -     
 -    return(@blocks); 
 - } 
 - #以上代码encode是编码后decode是解码后
 
  复制代码 |   
 
 
 
哈哈哈!!!!你的IP是不是 ?我都知道了!!! | 
 
 
 
 |