/**
* rc4加密算法,解密方法直接再一次加密就是解密
* @param [type] $data 要加密的数据
* @param [type] $pwd 加密使用的key
* @return [type] [description]
*/
function rc4($data, $pwd) {
$key[] = "";
$box[] = "";
$pwd_length = strlen($pwd);
$data_length = strlen($data);
$cipher = '';
for ($i = 0; $i < 256; $i++) {
$key[$i] = ord($pwd[$i % $pwd_length]);
$box[$i] = $i;
}
for ($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $key[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for ($a = $j = $i = 0; $i < $data_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$k = $box[(($box[$a] + $box[$j]) % 256)];
$cipher .= chr(ord($data[$i]) ^ $k);
}
return $cipher;
}
echo "=======================\r\n";
$msgkey = md5('89n3kb5bj9h3gz2');
$enstr = base64_encode(rc4('zhaokeli.com', $msgkey));
echo "rc4-enstr:{$enstr}\r\n";
$destr = rc4(base64_decode($enstr), $msgkey);
echo "rc4-destr:{$destr}\r\n";
?>
相关文章
- 12-04如何检查数据库是否使用php和ajax更新?
- 12-04openssl几个加密算法使用介绍
- 12-04php – 使用IIS的Windows 10 Pro上的SSL3_GET_SERVER_CERTIFICATE证书验证失败
- 12-04如果找不到,我们如何使用Apache重定向到新的HTML静态内容,并回退到基于CMS的旧PHP版本? (nginx try_files)
- 12-04php-使用Powershell为Wampserver创建虚拟主机
- 12-04加密算法使用(二):使用MD5加密字符串(另:byte数组转16进制自动补零方法写法)
- 12-04如何使用sqlsrv和“?”样式参数在php中执行存储过程
- 12-04记录一个使用加密算法过程中遇到的问题
- 12-04PHP-SQL搜索查询(使用LIKE)为列赋予优先级
- 12-04php-在sql中使用lat和long查找距离