PHP开源加密解密库(带超时)

简介:

phpseclib 是一组PHP语言实现的用于进行DES, 3DES, RC2, RC4, Rijndael, Twofish,Blowfish,AES, SSH-1和 SSH-2,非对称密钥算法RSA 等标准的实现,兼容Java,.NET等 http://phpseclib.sourceforge.net/documentation/

http://phpseclib.sourceforge.net/index.html

从discuz里面发现了一个很牛的加密解密函数。此函数的厉害之处在于可以在指定时间内加密还原字符串,超时无法还原。

这样我们就可以拿此函数来做很多用途了,比如:单点登录的token加密传输啦,临时密码 ,找回密码链接 等等。

16位MD5加密实现,解决32位太长的问题

Java代码   收藏代码
  1. function MD5hex($str) {  
  2.     return substr(md5($str), 816);  
  3. }  

在这里记录一下,方便以后应用。

Java代码   收藏代码
  1. <?php  
  2. /** 
  3. * @param string $string 原文或者密文 
  4. * @param string $operation 操作(ENCODE | DECODE), 默认为 DECODE 
  5. * @param string $key 密钥 
  6. * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效 
  7. * @return string 处理后的 原文或者 经过 base64_encode 处理后的密文 
  8. * 
  9. * @example authcode(serialize(array('mail' => $data['mail'])), 'ENCODE', APPKEY); 
  10. * 
  11. *  $a = authcode('abc', 'ENCODE', 'key'); 
  12. *  $b = authcode($a, 'DECODE', 'key');  // $b(abc) 
  13. * 
  14. *  $a = authcode('abc', 'ENCODE', 'key', 3600); 
  15. *  $b = authcode('abc', 'DECODE', 'key'); // 在一个小时内,$b(abc),否则 $b 为空 
  16. */  
  17. function authcode($string, $operation = 'DECODE', $key = '', $expiry = 3600)   
  18. {  
  19.     $ckey_length = 4;     
  20.     // 随机密钥长度 取值 0-32;  
  21.     // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。  
  22.     // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方  
  23.     // 当此值为 0 时,则不产生随机密钥  
  24.   
  25.     $key = md5($key ? $key : 'KEY');  
  26.     $keya = md5(substr($key, 016));  
  27.     $keyb = md5(substr($key, 1616));  
  28.     $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';  
  29.   
  30.     $cryptkey = $keya.md5($keya.$keyc);  
  31.     $key_length = strlen($cryptkey);  
  32.   
  33.     $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 016).$string;  
  34.     $string_length = strlen($string);  
  35.   
  36.     $result = '';  
  37.     $box = range(0255);  
  38.   
  39.     $rndkey = array();  
  40.     for($i = 0; $i <= 255; $i++)   
  41.     {  
  42.         $rndkey[$i] = ord($cryptkey[$i % $key_length]);  
  43.     }  
  44.   
  45.     for($j = $i = 0; $i < 256; $i++)   
  46.     {  
  47.         $j = ($j + $box[$i] + $rndkey[$i]) % 256;  
  48.         $tmp = $box[$i];  
  49.         $box[$i] = $box[$j];  
  50.         $box[$j] = $tmp;  
  51.     }  
  52.   
  53.     for($a = $j = $i = 0; $i < $string_length; $i++)   
  54.     {  
  55.         $a = ($a + 1) % 256;  
  56.         $j = ($j + $box[$a]) % 256;  
  57.         $tmp = $box[$a];  
  58.         $box[$a] = $box[$j];  
  59.         $box[$j] = $tmp;  
  60.         $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));  
  61.     }  
  62.   
  63.     if($operation == 'DECODE')   
  64.     {  
  65.         if((substr($result, 010) == 0 || substr($result, 010) - time() > 0) && substr($result, 1016) == substr(md5(substr($result, 26).$keyb), 016))   
  66.         {  
  67.             return substr($result, 26);  
  68.         }   
  69.         else   
  70.         {  
  71.             return '';  
  72.         }  
  73.     }   
  74.     else   
  75.     {  
  76.         return $keyc.str_replace('=''', base64_encode($result));  
  77.     }  
  78. }  
  79. ?>  
相关文章
|
1月前
|
PHP 数据安全/隐私保护
在PHP中使用AES进行加密和解密
在PHP中使用AES进行加密和解密
|
2月前
|
Java API Maven
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
我们经常会在yml配置文件中存放一些敏感数据,比如数据库的用户名、密码,第三方应用的秘钥等等。这些信息直接以明文形式展示在文件中,无疑是存在较大的安全隐患的,所以今天这篇文章,我会借助jasypt实现yml文件中敏感信息的加密处理。
166 1
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
|
4月前
|
存储 算法 安全
百度搜索:蓝易云【php几种常用的加密解密算法】
请注意,以上算法都有各自的特点和用途,选择合适的加密解密算法应根据具体需求和安全性要求。此外,加密只是数据保护的一部分,安全实现还应考虑其他因素,如密钥管理、访问控制和安全传输等。
58 0
|
5月前
|
JSON 算法 PHP
使用php实现简单的对称加密和解密过程
php实现简单的对称加密和解密
56 0
使用php实现简单的对称加密和解密过程
|
15天前
|
PHP 数据安全/隐私保护
PHP在线加密系统网站源码
这个是sg的加密,免费可用(目前)并不会收费 源码说明:下载直接上传即可
17 1
PHP在线加密系统网站源码
|
1月前
|
数据采集 存储 JavaScript
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
本文旨在介绍如何利用PHP中的simple_html_dom库结合爬虫代理IP技术来高效采集和分析汽车之家网站的电动车参数。通过实际示例和详细说明,读者将了解如何实现数据分析和爬虫技术的结合应用,从而更好地理解和应用相关技术。
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
|
3月前
|
PHP 数据安全/隐私保护
|
3月前
|
PHP 数据安全/隐私保护
|
3月前
|
PHP 数据安全/隐私保护