Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16688
  • 博文数量: 5
  • 博客积分: 169
  • 博客等级: 入伍新兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-17 17:56
文章分类

全部博文(5)

文章存档

2011年(5)

我的朋友
最近访客

分类: Python/Ruby

2011-05-27 17:54:17

  1. <?php
  2. // +----------------------------------------------------------------------+
  3. // | Wiki Framework |
  4. // +----------------------------------------------------------------------+
  5. // $string 明文 或 密文 必填
  6. // $isEncrypt 是否加密 可选,默认为加密
  7. // $key 密匙 可选,默认为空格
  8. // $b = gncrypt($a,TRUE,'123');
  9. // $c = gncrypt($b,false,'123');
  10. // 采用SHA1生成密匙簿,超过300个字符使用ZLIB压缩
  11. function gncrypt($string, $isEncrypt = true, $key = KEY_SPACE) {
  12.     if (!isset($string{0}) || !isset($key{0})) {
  13.         return false;
  14.     }
  15.     $dynKey = $isEncrypt ? sha1(microtime(true)) : substr($string, 0, 40);
  16.     //$fixedKey = hash('sha1', $key);
  17.     $fixedKey = sha1($key);
  18.     $dynKeyPart1 = substr($dynKey, 0, 20);
  19.     $dynKeyPart2 = substr($dynKey, 20);
  20.     $fixedKeyPart1 = substr($fixedKey, 0, 20);
  21.     $fixedKeyPart2 = substr($fixedKey, 20);
  22.     $key = sha1($dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2);
  23.     $string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset($string{339}) ? gzuncompress(base64_decode(substr($string, 40))) : base64_decode(substr($string, 40)));
  24.     $n = 0;
  25.     $result = '';
  26.     $len = strlen($string);
  27.     for ($n = 0; $n < $len; $n++) {
  28.         $result .= chr(ord($string{$n}) ^ ord($key{$n % 40}));
  29.     }
  30.     return $isEncrypt ? $dynKey . str_replace('=', '', base64_encode($n > 299 ? gzcompress($result) : $result)) : substr($result, 20, -20);
  31. }

  32. $h = "hello world";
  33. $a = gncrypt($h, true, "123");
  34. echo $a."\n";
  35. $b = gncrypt($a, false, "123");
  36. echo $b."\b";

===========================================================================================
  1. <?php

  2. /*/
  3. # 函数功能:加密/解密
  4. # 函数名称:zxingcrypt
  5. # 参数表 :string date 要加密和解密的数据,$key 密钥,【, string mode = 'encode' 默认为加密 - 'decode'为解密】
  6. # 返回值 :string
  7. # 更新时间:Thu Mar 06 08:30:46 CST 2008
  8. /*/
  9. function gncrypt($data,$key='greenet',$mode = 'encode')
  10. {
  11.     $key = md5($key);//用MD5哈希生成一个密钥,注意加密和解密的密钥必须统一
  12.     if ($mode == 'decode'){
  13.      $data = base64_decode($data);
  14.     }
  15.     if (function_exists('mcrypt_create_iv')){
  16.      $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  17.      $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  18.     }
  19.     if (isset($iv) && $mode == 'encode'){
  20.      $passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv);
  21.     }elseif (isset($iv) && $mode == 'decode'){
  22.      $passcrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv);
  23.     }
  24.     if ($mode == 'encode'){
  25.      $passcrypt = base64_encode($passcrypt);
  26.     }
  27.     return $passcrypt;
  28. }

  29. $encodestr = gncrypt('helloworld');
  30. echo "base64=".base64_encode($encodestr)."
    "
    ;
  31. echo "string after encode=".$encodestr."
    "
    ;
  32. $decodestr = gncrypt($encodestr,'greenet','decode');
  33. echo "decrypt string=".$decodestr."
    "
    ;


阅读(864) | 评论(3) | 转发(0) |
0

上一篇:Ubuntu企业云计算平台研究

下一篇:没有了

给主人留下些什么吧!~~

yifangyou2011-06-08 11:57:43

huyi_bb: md5不是加密吧,是哈希算法。.....
是啊,md5属于不可逆加密,在网站user表的password里经常用

huyi_bb2011-06-08 11:55:51

yifangyou: 最常用的md5没有啊,还有crc32,有没有des加密.....
md5不是加密吧,是哈希算法。

yifangyou2011-05-30 22:04:29

最常用的md5没有啊,还有crc32,有没有des加密