PHP
PHP实现RC4加解密
PHP实现RC4加解密
这篇教程跟大家分享PHP如何进行RC4加解密,RC4加解密代码如下:
/** * RC4位置替换 * @param $a * @param $b */ function _swap(&$a, &$b) { $tmp = $a; $a = $b; $b = $tmp; } /** * RC4 加密 * @param $key * @param $data * @param bool $decrypted * @return string */ function _encrypted($key, $data, $decrypted = false) { $keyLength = strlen($key); $S = array(); for ($i = 0; $i < 256; $i++) $S[$i] = $i; $j = 0; for ($i = 0; $i < 256; $i++) { $j = ($j + $S[$i] + ord($key[$i % $keyLength])) % 256; _swap($S[$i], $S[$j]); } $dataLength = strlen($data); $output = ""; for ($a = $j = $i = 0; $i < $dataLength; $i++) { $a = ($a + 1) % 256; $j = ($j + $S[$a]) % 256; _swap($S[$a], $S[$j]); $k = $S[(($S[$a] + $S[$j]) % 256)]; $output .= chr(ord($data[$i]) ^ $k); } return ($decrypted) ? $output : bin2hex($output); } /** * RC4 解密 * @param $key * @param $data * @return string */ function _decrypted($key, $data) { if (function_exists("hex2bin")) { return _encrypted($key, hex2bin($data), true); } else { return _encrypted($key, pack("H*", $data), true); // hex2bin php5.4才支持 } } $key = "12343"; $data = "hello"; #加密前 $signData = _encrypted($key, $data); #加密后 $signLastData = _decrypted($key, $signData);
这样我们就成功的实现RC4加解密。
0条评论