RC4暗号化と復号化暗号化と復号化を達成するためにPHPのPHPは、RC4を実装しました

暗号化と復号化RC4を達成するためのPHP

 

    RC4アルゴリズムRC4暗号化アルゴリズムは、1987設計変数ストリーム暗号アルゴリズムクラスタのロナルド・リベスト、キーの長さでトップの男のRSA有名なトリオです。RC4は、無線通信ネットワークのための電子情報技術の分野での暗号化アルゴリズムは、電子パスワード、ユーザーのみがサービスを楽しむことができます(適切な料金を支払うことを)許可されています。

   1987年に提案されているRC4は、対称暗号化アルゴリズム、単一のキーとして使用する(または秘密鍵と呼ばれる)されるキーです。RC4はクリアテキストパケット処理ではなく、実施の順番は、各バイトの平文バイトストリームを暗号化し、時間を順次暗号文は、各バイトを復号化する復号化されます。

       特性キーの長さならば、今日では前提をサポートする、アルゴリズムRC4アルゴリズムは速く、簡単で、キーの長さが可変である、1から256バイト(8から2048ビット)の可変範囲検索キー暴力行為と128ビットが、長い時間のためのキーの検索では任意の暴力的な攻撃に耐えることができRC4キーの範囲を予測することが可能であり、現実的ではない持っていました。実際には、今で効果的な攻撃128ビットRC4暗号化アルゴリズムキーの長さを見つけるための方法はありません

 

/ * Pwdのキーを$。

$データは、データを暗号化します

* /

パブリック関数RC4($のPWD、$データ)
{
$暗号= '';
$キー[] = "";
$ボックス[] = "";
$ pwd_length = strlen関数($のPWD)。
$ DATA_LENGTH = strlen関数($データ)。
(; $ I <256; $ i = 0 iは++ $)のために{
$キー[$ iは] ORD($ PWD [$ I%の$のpwd_lengthを)=。
$ボックス[$ i]は= $ I;
}
($のJ = $ i = 0; $ I <256; $ iは++)のために、{
$ jを=($のJ + 1 $ボックス[$ i]が+ $キー[$のI])%256。
$ TMP = $ボックス[$ i]は、
$ボックス[$ i]を= $ボックス[$ jを];
$ボックス[$ jの] = $ TMP;
}
($ A = $ J = $ I = 0; $ I <$ DATA_LENGTH; $ iは++)のために{
$ =($ Aを+ 1)%256。
の$ J =($ J + 1 $ボックス[$ A])%256。
$ TMP = $ボックス[$ A];
$ボックス[$ A] = $ボックス[$ J];
$ボックス[$ J = $ TMP;
$ K = $ボックス[(($ボックス[$ A] + $ボックス[$ J])%256)]
。$暗号= CHR(ORD($ DATA [$ I])^ $ K);
}
戻り$暗号;
}



解読は、この方法ができたら再起動

注:ソースをHTTPS ://www.cnblogs.com/haoxuanchen2014/p/7783782.html

    RC4アルゴリズムRC4暗号化アルゴリズムは、1987設計変数ストリーム暗号アルゴリズムクラスタのロナルド・リベスト、キーの長さでトップの男のRSA有名なトリオです。RC4は、無線通信ネットワークのための電子情報技術の分野での暗号化アルゴリズムは、電子パスワード、ユーザーのみがサービスを楽しむことができます(適切な料金を支払うことを)許可されています。

   1987年に提案されているRC4は、対称暗号化アルゴリズム、単一のキーとして使用する(または秘密鍵と呼ばれる)されるキーです。RC4はクリアテキストパケット処理ではなく、実施の順番は、各バイトの平文バイトストリームを暗号化し、時間を順次暗号文は、各バイトを復号化する復号化されます。

       特性キーの長さならば、今日では前提をサポートする、アルゴリズムRC4アルゴリズムは速く、簡単で、キーの長さが可変である、1から256バイト(8から2048ビット)の可変範囲検索キー暴力行為と128ビットが、長い時間のためのキーの検索では任意の暴力的な攻撃に耐えることができRC4キーの範囲を予測することが可能であり、現実的ではない持っていました。実際には、今で効果的な攻撃128ビットRC4暗号化アルゴリズムキーの長さを見つけるための方法はありません

 

/ * Pwdのキーを$。

$データは、データを暗号化します

* /

パブリック関数RC4($のPWD、$データ)
{
$暗号= '';
$キー[] = "";
$ボックス[] = "";
$ pwd_length = strlen関数($のPWD)。
$ DATA_LENGTH = strlen関数($データ)。
(; $ I <256; $ i = 0 iは++ $)のために{
$キー[$ iは] ORD($ PWD [$ I%の$のpwd_lengthを)=。
$ボックス[$ i]は= $ I;
}
($のJ = $ i = 0; $ I <256; $ iは++)のために、{
$ jを=($のJ + 1 $ボックス[$ i]が+ $キー[$のI])%256。
$ TMP = $ボックス[$ i]は、
$ボックス[$ i]を= $ボックス[$ jを];
$ボックス[$ jの] = $ TMP;
}
($ A = $ J = $ I = 0; $ I <$ DATA_LENGTH; $ iは++)のために{
$ =($ Aを+ 1)%256。
の$ J =($ J + 1 $ボックス[$ A])%256。
$ TMP = $ボックス[$ A];
$ボックス[$ A] = $ボックス[$ J];
$ボックス[$ J = $ TMP;
$ K = $ボックス[(($ボックス[$ A] + $ボックス[$ J])%256)]
。$暗号= CHR(ORD($ DATA [$ I])^ $ K);
}
戻り$暗号;
}



解読は、この方法ができたら再起動

注:ソースをHTTPS ://www.cnblogs.com/haoxuanchen2014/p/7783782.html

おすすめ

転載: www.cnblogs.com/chenjunwu/p/11535164.html