PHP RSA の調査

WBOY
リリース: 2016-06-23 14:34:20
オリジナル
1550 人が閲覧しました

最近、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

の出力は次のとおりです: Private-Key: (1024 bit) 00:d1: 92:47:1b:86:99:64: 0f:93:1f:e6:f4:fa:cc: 67:52: f7:34:5c:f9:b5:f1:27:10:01:b7:24:f7:a0: ab:f0:a6:e9:11:e3 :09:53:6f:4b:e4:74 :9e:92:dc:
modulus: 3e:99:0b:89:4f:89:4c:ea:5b:ee:0d:cb :d7:a4:b7:
c5:31:b8:e3:6b:95:96:9d:20:66:49:c9:dd:23:71: b4:13:a8:df:d9:b9 :25:69:66:0b:14:99:a5:cd:31:

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 についての私の理解を話させてください。まず、公開鍵と秘密鍵のペアが生成され、その後、公開鍵が解放されます。外部システムは公開鍵を使用して暗号化し、内部システムは秘密鍵を使用します。復号化するためのキー。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート