ホームページ バックエンド開発 PHPチュートリアル JS は文字列をインターセプトします。PHP 文字列暗号化関数は、指定された時間内に文字列を暗号化して復元します。タイムアウト後には復元できません。

JS は文字列をインターセプトします。PHP 文字列暗号化関数は、指定された時間内に文字列を暗号化して復元します。タイムアウト後には復元できません。

Jul 29, 2016 am 08:42 AM
jsは文字列をインターセプトします

このようにして、この関数をシングル サインオン トークンの暗号化送信、一時パスワードなどのさまざまな目的に使用できます。

コードをコピーします コードは次のとおりです:


/**
* @param string $string 元のテキストまたは暗号文
* @param string $operation 操作 (ENCODE | DECODE)、デフォルトは DECODE です
* @param string $key key
* @param int $expiry 暗号文の有効期間 (暗号化された場合) 有効、単位は秒、0は永続的に有効です
* @return string 処理された原文、またはbase64_encodeで処理された暗号文
*
* @example
*
* $a = authcode('abc', 'ENCODE', ' key' );
* $b = 認証コード($a, 'DECODE', 'key'); // $b(abc)
*
* $a = 認証コード('abc', 'ENCODE', 'key' , 3600 );
* $b = authcode('abc', 'DECODE', 'key'); // 1 時間以内は $b(abc)、それ以外の場合は $b が空になります
* /
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 3600) {
$ckey_length = 4;
// ランダムなキーの長さの値
/ / 追加 ランダムなキーを使用すると、元のテキストとキーがまったく同じであっても、暗号化結果は毎回異なり、解読がより困難になります。
// 値が大きいほど、暗号文の変更パターンが大きくなります。 暗号文の変更 = 16 の $ckey_length 乗
// この値が 0 の場合、ランダムなキーは生成されません
$key = md5($key ? $key : EABAX::getAppInf('KEY'));
$keya = md5(substr($key, 0, 16));
$keyb = md5($key, 16, 16); keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = $operation == 'DECODE' ?base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length =
$result = ''; $box = range(0, 255);
$rndkey = array();
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[$j] = $tmp; = $j = $i = 0; $i $a = ($a + 1) % 256; ;
$tmp = $box[$a];
$box[$j] = $tmp; $i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == 'DECODE') {
if((substr( $result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else {
return '';
}
} else {
return $keyc.str_replace('=', ' '、base64_encode($result));
}
}


上記は、文字列の JS インターセプトを紹介しました。指定された時間内に文字列を暗号化して復元します。これには、文字列の JS インターセプトの内容が含まれています。 PHP チュートリアルに興味があります。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles