PHP 中實現 rc4加密解密
RC4算法 RC4加密算法是大名鼎鼎的RSA三人組中的頭號人物Ron Rivest在1987年設計的密鑰長度可變的流加密算法簇。RC4算法是一種在電子信息領域加密的技術手段,用於無線通信網絡,是一種電子密碼,只有經過授權(繳納相應費用)的用戶才能享受該服務。
RC4於1987年提出,是一種對稱加密算法,也就是說使用的密鑰為單鑰(或稱為私鑰)。RC4不是對明文進行分組處理,而是字節流的方式依次加密明文中的每一個字節,解密的時候也是依次對密文中的每一個字節進行解密。
RC4算法的特點是算法簡單,運行速度快,而且密鑰長度是可變的,可變范圍為1-256字節(8-2048比特),在如今技術支持的前提下,當密鑰長度為128比特時,用暴力法搜索密鑰已經不太可行,所以可以預見RC4的密鑰范圍任然可以在今后相當長的時間里抵御暴力搜索密鑰的攻擊。實際上,如今也沒有找到對於128bit密鑰長度的RC4加密算法的有效攻擊方法
/* $pwd 秘鑰;
$data 要加密的數據
*/
public function rc4($pwd, $data)
{
$cipher = '';
$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;
}
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;
}
解密的話重新調用一次該方法即可
注:來源 https://www.cnblogs.com/haoxuanchen2014/p/7783782.html