返回列表 回复 发帖

[转帖]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字节可以填充空格等特殊字符。

以下是举例:
  1. #!/usr/bin/perl
  2. use Crypt::blowfish; #加载模块
  3. #需要加密的资料
  4. $data = qq~欢迎光临www.ilcatperl.org这里是Perl的天堂
  5. 欢迎喜欢Perl
  6. 如果你觉得Perl不行,那就是你水平太臭,回家看孩子玩吧~;
  7. #构造对象
  8. my $fish = new Crypt::Blowfish 'this is my key'; # 8 bytes < Key > 56 bytes
  9. #编码
  10. @data = &block($data); #将数据以8个字节块化,如果最后不够补充空格
  11. foreach (@data) {
  12.    $encode .= $fish->encrypt($_);
  13. }
  14. #解码
  15. @data = &block($encode); #将数据以8个字节块化,如果最后不够补充空格
  16. foreach (@data) {
  17.    $decode .= $fish->decrypt($_);
  18. }
  19. #块化子程序
  20. sub block
  21. {
  22.    my ($string) = @_;
  23.    my (@blocks,$last_length,$nu,$ad);
  24.    my @blocks = unpack("a8 "x(int(length($data)/) . "a*", $string);
  25.    $last_length = length($blocks[$#blocks]);
  26.    if (($nu = 8 - $last_length) > 0) {
  27.       for (my $i=1;$i<=$nu ;$i++) {
  28.          $ad .= ' ';
  29.       }
  30.    }
  31.    $blocks[$#blocks]= $blocks[$#blocks].$ad;
  32.    
  33.    return(@blocks);
  34. }
  35. #以上代码encode是编码后decode是解码后
复制代码
哈哈哈!!!!你的IP是不是?我都知道了!!!
返回列表