PHP RSA の調査
最近、QQ メールボックスのログイン プロセスを研究したところ、QQ メールボックスのログインはより厳密であり、ログイン ページで JavaScript を使用してユーザーのパスワードを暗号化することがいくつか追加されていることがわかりました。段落
12345678 ログイン後にコピー | var PublicKey = "CF87D7B4C864F4842F1D337491A48FFF54B73A17300E8E42FA365420393AC0346AE55D8AFAD975DFA175FAF0106CBA81AF1DDE4ACEC284DAC6ED9A0D8FEB1CC070733C58213EFFED46529C54CEA06D774E3CC7E073346AEBD6C66FC973F299EB74738E400B22B1E7CDC54E71AED059D228DFEB5B29C530FF341502AE56DDCFE9";var RSA = new RSAKey();RSA.setPublic(PublicKey, "10001");var Res = RSA.encrypt(document.form1.pp.value + '\n' + document.form1.ts.value + '\n');if (Res){document.form1.p.value = hex2b64(Res);} ログイン後にコピー |
RSAKey の関連ソース コードを見てください。http://m367.mail.qq.com/zh_CN/htmledition/js/safeauth.js にあるはずです。 、しばらくしてから、かなり複雑になったので、関連する情報があるかどうかを確認するために Google で検索したところ、この Web サイト「JavaScript における BigIntegers と RSA」を見つけました。コードを見てみると、基本的には QQ と同じでした。 、QQ も同じだと思います。この記事にはキー ペアの生成、暗号化、復号化のテスト ページが含まれています。このことから、QQ コードの PublicKey はキーのモジュラスであると推測できます。 QQ は 1024 ビットのキーを使用するため、このモジュールを使用して他の言語 (PHP など) のパスワードを暗号化できますか?
Googleで「PHP RSA」を検索すると、PHP RSAの実装が掲載されているWebサイト http://www.edsko.net/misc/ が見つかったので、それを使用しました。 rsa_encrypt($message , $public_key, $modulus, $keylength) メソッドには 4 つのパラメーターがあり、現在わかっているのは暗号化される文字列です。 、$public_key $keylength と $keylength はどこから来ているのでしょうか? 提供されている例を見てみましょう。当然のことながら、この例はキー ペア ファイルから関連情報を取得していることがわかります。ファイルを取得できません。その場合は、自分でキー ペア ファイルを生成するしかありません。ルールを見てみましょう。Linux で openssl を使用します。
openssl genrsa -out key.pem 1024
1024 ビット キーペアファイルが生成されるので、それを開いて確認してください。Base64 でエンコードされているはずです。次のコマンドで係数を取得できます。次に使用するコマンド
openssl rsa -in key.pem -text -noout
modulus: | 00:d1: 92:47:1b:86:99:64: 0f:93:1f:e6:f4:fa:cc:3e:99:0b:89:4f:89:4c:ea:5b:ee:0d:cb :d7:a4:b7: | 67:52: f7:34:5c:f9:b5:f1:27:10:01:b7:24:f7:a0:
0b:86:a8:fd:e2:49:88:e4:56: 89:7a:41:6d:2e:7b:
0b:64:9f:07:14:f3:22:c5:7e:f9:25:63:b2:1a:44:8d:10:72: ff:38:06:c3:4c:75
publicExponent: 65537 (0×10001) privateExponent:
00:83:d3:d9:08:f6:95:3c:bd:13:56:29:09: 07:4e:
3d:3e:36:64 :8c:74:98:be:7f:4f:72:bc:3c:0c:f0:
15:7d:b9:e4:e5:6b:6a: c8:a4:42:cc:61:71: 4e:97:
72:30:f2:3d:80:33:e9:a4:e3:48:c1:0f:9e:c4:51:
3d: 75:f6:90:8e:f3:c3: f8:ce:45:59:2a:67:42:a8:
c6:d0:4c:1d:12:c4:cf:53:f8:b1:58 :b4:e1:23:71:
0e: e9:e9:e0:40:3d:9a:99:e3:5f:e1:93:04:e2:0a:
60:34:77:56:be :f9:8f:e6:4e:87:23 :46:48:ba:38:
9d:dd:46:ce:20:b7:82:27:cd
prime1:
00:ee:a9:e4 :70:9c:d4:fe:bf:cd :87:5c:00:cb:ea:
ef:82:92:e1:88:f7:99:6a:42:09:f4:fd:78: 93:bd:
30:28:1f:2e :ed:c1:cd:d3:60:8b:34:52:89:a7:ac:
98:37:cd:96:81:1e:57: 2f:46:08:0e:8d:fb: 13:92:
8d:f5:7a:50:5f
プライム2:
00:e0:cb:65:5e:31:f2:3b:c0:7f: 93:ae:d9:6c:35:
75 :e5:ce:8b:37:7d:39:ce:82:dd:9b:43:00:09:a6:
d8:c1:ab:bc: 10:fe:3d:56:34:fe: bd:38:fe:fc:6c:
f2:74:a8:d6:40:25:e5:5a:35:7b:d0:24:71:44 :8d:
53:23:71:83: ab
指数 1:
4b:d5:7f:d8:a8:7c:a5:55:9c:a0:de:03:02:c8:6b:
c2: 39:99:a0:43:cc:63: 8f:08:4a:e8:1f:60:12:45:
32:fa:75:96:e6:75:d8:2c:5d:0f:0b :0a:e2:54:5d:
29: 9e:11:ac:85:4f:7e:9d:ea:01:75:eb:c9:94:4f:
b7:28:5e:51
指数 2 :
00:9b:9f:d4:56: a8:e7:55:3c:88:55:fa:97:a5:55:
41:80:ce:44:0d:2f:51:a4:c9 :6e:97:fd:83:7a:2b :
1b:26:c1:38:da:de:d8:21:e5:60:72:29:92:45:b9:
3b:05:4e :99:bd:21:3f:2d:fb :96:f2:db:37:db:48:
a7:c5:02:e2:2f
係数:
00:c2:75:38:a5:02 :24:39:1e:0e:e9:ec :56:6a:31:
5d:38:82:ca:3e:9b:67:cb:40:7e:7b:2f:91:26:bb:
4e:64:3d:60:53:f1 :21:67:8b:b7:af:f8:2e:95:f7:
af:cf:42:75:ab:6c:5c:42:97: 42:17:94:17:ff:e0:
b9:cb:c9:e8:6d
サンプルのコードを通して、$public_key は 1024、$keylength は 65537、$modulus はこれを使用できないことがわかりましたテキストを直接書き込む場合は、最初に BigInteger に変換してから、書き込んだテキストを渡す必要があります。 BigInteger 実装は PEAR (http://pear.php.net/package/Math_BigInteger) で利用できます
次にプログラムを書きましょう
るー
るー
最後に、RSA についての私の理解を話させてください。まず、公開鍵と秘密鍵のペアが生成され、その後、公開鍵が解放されます。外部システムは公開鍵を使用して暗号化し、内部システムは秘密鍵を使用します。復号化するためのキー。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。
