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条评论