内置函数:rc4byte

录入时间:2017/2/11 20:29:09      最后更新:2017/2/12 22:52:19

函数名 :rc4byte 功能 :标准的rc4算法函数(原文用本函数处理一次就变成了密文,密文再用相同的密钥处理一次就成了明文) 参数1 $pwd :密钥 参数2 $data :要加密的数据 返回值 :加密或解密后的字符串 备注 :rc4byte已存在,不用再将以下代码填入高级API里,下边是rc4算法在php里实现的具体代码 function rc4byte ($pwd, $data){ $key[] =""; $box[] =""; $pwd_length = strlen($pwd); $data_length = strlen($data); 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; } $cipher=''; 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; }
例如: 1、服务端实现 假设 第二个资源字符串="hello world!"
function v_rc4test($a){ $rc4key=$a; //将客户端传来的参数当rc4密钥 $data=_rs(2); //将第二个资源字符串赋值给$data $data=rc4byte($rc4key,$data); //将$a用rc4加密一次 $data=base64_encode($data); //加密后的再base64编码一次 base64_encode是php的内置函数 return $data; }
2、客户端逻辑 rc4密钥=取随机字符串() 返回值=advapi("v_rc4test,"+rc4密钥) 返回值=base64解码(返回值) 返回值=rc4解密(rc4密钥,返回值) 正常的话返回值应该就是 hello world!

 Copyright 2008-2017 武汉市洪山区火云网络工作室 可可网络验证系统
 联系电话:027-88778177    鄂ICP备12009746号