PHP暗号化・復号化関数authcodeの具体的なコード例は以下の通りです。
- // パラメータの説明
- // $string: 平文または暗号文
- // $operation: DECODE は復号を意味し、その他は暗号化を意味します
-
// $key: 鍵
- // $expiry: 暗号文の有効期間
-
function authcode($string, $operation =
'DECODE', $key = 」 , $expiry = 0) {
- // 動的鍵の長さ、同じ平文は動的鍵に応じて異なる暗号文を生成します
-
$ckey_length = 4;
- //キー
-
$key = md5($key ? $key : $GLOBALS['discu z_auth_key']);
- //キー a は暗号化と復号化に参加します
- $keya = md5(substr($key, 0, 16));
- // キー b はデータの整合性のために使用されます検証
- $keyb = md5(substr($key, 16, 16));
- //キー c は生成された暗号文を変更するために使用されます
- $ keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5
(microtime()), -$ckey_length ):: ' '; '
// 操作の操作に参加する PHP 暗号化復号関数 Authcode
- Cryptkey
- = $ keya.md5 ($ Keya. $ Keyc);ストレン($cryptkey); // プレーンテキスト、最初の 10 ビットはタイムスタンプの保存に使用され、復号化時にデータの有効性が検証されます。
10 ~ 26 ビットは $keyb (キー b) の保存に使用されます、データの整合性は、-
// 復号化するときにこのキーを通じて検証されます。復号化する場合、暗号文の前の $ckey_length ビットが動的キーを保存するため、$ckey_length ビットから開始されます。復号化 $ String = $
- Operation
== 'decode'? Base64_Decode (Substr ($ String, $ CKEY_LENGTH)): Sprintf ('%010d', $ Expiry? )$expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; -
$結果 ='';
-
$ボックス = 範囲(0, 2 55);
-
$rndkey = array();
-
//PHP暗号化および復号化関数authcodeはキーブックを生成します for($i =
0- ; $i
= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); } //固定アルゴリズムを使用し、ランダム性を追加するキーブックは非常に複雑に見えますが、実際には暗号文の強度は増加しません - for($
- j = $
- i
=
0-
; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i];
$box[$i] = $box[$j]; } - //PHP 暗号化および復号化関数 authcode コアの暗号化および復号化部分
for($- a = $j
= $ - i
= - 0 ; $i
- < $string_length; $i++) {
- $a
- = ($a + 1) $ j = ( $j + $box[$a]) % 256; $tmp = $box[$a]; // PHP 暗号化そして、復号化関数 authcode はキーブックからキーを取得し、XOR を実行して文字に変換します $result
- . = chr(ord($string[$i]) ^ (
$box[($box[$a] + $box[$j]) % 256])); - } $IF ($ Peration
- == 'デコード') { // substr ($ result, 0, 10) == 0 検証データ有効 , 0, 10) - time() >
- 0 データの有効性を検証
- // substr($result, 10, 16) == substr(md5(substr ($result, 26). $keyb), 0, 16) データの整合性を検証します
- // データの有効性を検証します。暗号化されていない平文の形式を参照してください
-
if ((substr($result, 0, 10) == 0 | | substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) = = substr(md5(substr($result, 26).$keyb), 0, 16)) {
- return substr($result, 26)
- } else {
-
return ''; }
- } else {
- //PHP の暗号化および復号化関数 authcode は、異なる暗号文を生成した後に同じ平文を復号できるのはこのためです。暗号化された暗号文には特殊文字が含まれている可能性があり、コピー処理中に失われる可能性があるため、base64 エンコードを使用してください
-
return $keyc.str_replace('=', '', base64_encode($result)) ; } -
}
-
上記のコードは、PHP の暗号化および復号化関数 authcode の具体的な使用方法です。この記事で紹介した内容を通じて、この関数の意味をまず理解していただければ幸いです。
-
http://www.bkjia.com/PHPjc/446263.html- www.bkjia.com
true
http://www.bkjia.com/PHPjc/446263.html
技術記事
PHP暗号化・復号化関数authcodeの具体的なコード例は以下のとおりです。 //パラメータの説明//$string:平文または暗号文//$operation:DECODEは復号、その他は暗号化を意味します//$key:秘密鍵// $期限切れ...