ホームページ > バックエンド開発 > PHPチュートリアル > DX の認証コードを JS バージョンに変更する (変換が困難)

DX の認証コードを JS バージョンに変更する (変換が困難)

WBOY
リリース: 2016-06-13 12:52:27
オリジナル
844 人が閲覧しました

DXのauthcodeをJS版に変更、変換困難

<br>
// パラメータの説明 <br>
// $string: 平文または暗号文 <br>
// $operation: DECODE は復号化を意味し、その他は暗号化を意味します <br>
// $key:キー <br>
// $expiry: 暗号文の有効期限 <br>
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { <br>
// 動的キーの長さ。同じ平文は動的キーに依存して異なる暗号文を生成します <br>
$ckey_length = 4;
<br>
// キー <br>
$key = md5($key ? $key : $GLOBALS['discuz_auth_key']);
<br>
// キー a は暗号化と復号化に参加します <br>
$keya = md5(substr($key, 0, 16));
// キー b はデータ整合性の検証に使用されます <br>
$keyb = md5(substr($key, 16, 16));
// キー c は、生成された暗号文を変更するために使用されます <br>
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
//計算に関係するキー <br>
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey) <br>
// プレーン テキスト。最初の 10 ビットは、タイムスタンプを保存し、復号化中にデータの有効性を検証するために使用されます。10 ~ 26 ビットは、$keyb (キー b) を保存するために使用されます。このキーは、復号化中にデータの整合性を検証するために使用されます。 <br>
// 復号化する場合は、$ckey_length ビットから開始します。これは、暗号文の前の $ckey_length ビットに動的キーが保存され、正しい復号化が保証されるためです <br>
$string = $operation == 'DECODE' ?base64_decode(substr($string, $ckey_length)) : sprintf(' 0d', $expiry ? $expiry time() : 0).substr(md5($string.$ keyb) ), 0, 16).$string <br>
$string_length = strlen($string);
$結果 = '';
$box = range(0, 255);
$rndkey = 配列<br>
// キーブックを生成 <br>
for($i = 0; $i 
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
} <br>
//固定アルゴリズムを使用してキーブックをスクランブルし、ランダム性を高めるのは複雑に見えるかもしれませんが、実際には暗号文の強度は向上しません <br>
for($j = $i = 0; $i 
$j = ($j $box[$i] $rndkey[$i]) % 256;
$tmp = $box[$i] <br>
$box[$i] = $box[$j] <br>
$box[$j] = $tmp;
} <br>
// コアの暗号化と復号化部分 <br>
for($a = $j = $i = 0; $i 
$a = ($a 1) % 256; <br>
$j = ($j $box[$a]) % 256;
$tmp = $box[$a];
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート