クラシック PHP 暗号化および復号化関数 Authcode() 修復バージョン code_PHP チュートリアル
Jul 13, 2016 am 09:57 AM古典的な PHP 暗号化および復号化関数 Authcode() のコードを修復します
この関数は Discuz プログラムから来ており、キーと有効期限を設定するために使用されます。多くの場合、どれも役に立ちます。元の関数コードでは +、/、& などの文字が生成される場合があり、これらの文字は URL を通じて値が返されるときにエスケープされ、復号化できなくなります。 Fireend Network はわずかな修正を加え、これらの文字を他の文字に置き換え、復号化時に元に戻しました。そのため、完璧でした。
コードは次のとおりです:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
関数 authcode($string, $operation = 'DECODE', $key = '', $expiry = 0){
if($operation == 'デコード') { $string = str_replace('[a]','+',$string); $string = str_replace('[b]','&',$string); $string = str_replace('[c]','/',$string); } $ckey_length = 4; $key = md5($key ? $key : 'livcmsencryption '); $keya = md5(substr($key, 0, 16)); $keyb = md5(substr($key, 16, 16)); $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); $string = $operation == 'DECODE' ?base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string) .$keyb), 0, 16).$string; $string_length = strlen($string); $結果 = ''; $box = range(0, 255); $rndkey = 配列(); for($i = 0; $i $rndkey[$i] = ord($cryptkey[$i % $key_length]); } for($j = $i = 0; $i $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } for($a = $j = $i = 0; $i $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation == 'デコード') { if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5 (substr($result, 26).$keyb), 0, 16)) {
substr($result, 26); を返す} 他 { 戻る ''; } } 他 { $ustr = $keyc.str_replace('=', '',base64_encode($result)); $ustr = str_replace('+','[a]',$ustr); $ustr = str_replace('&','[b]',$ustr); $ustr = str_replace('/','[c]',$ustr); $ustr を返す; } } |

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
