php實現(xiàn)rc4加密算法代碼
更新時間:2012年04月25日 19:06:52 作者:
此算法的解密方法是重新加密一次,便可還原,需要的朋友可以參考下
代碼
/*
* rc4加密算法
* $pwd 密鑰
* $data 要加密的數(shù)據(jù)
*/
function rc4 ($pwd, $data)//$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;
}
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;
}
復制代碼 代碼如下:
/*
* rc4加密算法
* $pwd 密鑰
* $data 要加密的數(shù)據(jù)
*/
function rc4 ($pwd, $data)//$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;
}
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;
}
相關文章
Laravel 解決419錯誤 -ajax請求錯誤的問題(CSRF驗證)
今天小編就為大家分享一篇Laravel 解決419錯誤 -ajax請求錯誤的問題(CSRF驗證),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10Zend Framework教程之路由功能Zend_Controller_Router詳解
這篇文章主要介紹了Zend Framework教程之路由功能Zend_Controller_Router,詳細分析了路由功能Zend_Controller_Router的原理,使用技巧與相關注意事項,需要的朋友可以參考下2016-03-03PHP實現(xiàn)采集中國天氣網(wǎng)未來7天天氣
這篇文章主要介紹了PHP實現(xiàn)采集中國天氣網(wǎng)未來7天天氣方法,本文詳細的講解了需求的實現(xiàn),也可以做為學習PHP采集的入門教程,需要的朋友可以參考下2014-10-10php file_get_contents抓取Gzip網(wǎng)頁亂碼的三種解決方法
用 file_get_contents() 函數(shù)抓取網(wǎng)頁會發(fā)生亂碼現(xiàn)象。有兩個原因會導致亂碼,一個是編碼問題,一個是目標頁面開了Gzip,下面說的就是開了Gzip功能如何才能不亂碼的方法2013-11-11