1

PHP でテキストを暗号化し、RSA を使用して JavaScript で復号化しようとしています。PHPで私は使用しますphpseclib。クライアントサイトについては、forgeデジタルバザーで試しました。

ドキュメントによると、彼らは秘密鍵と公開鍵を 1 つのオブジェクトに作成し、魔法を開始します。

 /*** Generating 1024-bit key-pair */  
 keys = forge.pki.rsa.generateKeyPair(1024);  

 /*** public key encryption */    
 var ciphertext = keys.publicKey.encrypt("Secret");     

 /*** private key decryption */  
 var plaintext  = keys.privateKey.decrypt(ciphertext); 

特定の秘密鍵を文字列として使用して、偽造でメッセージを復号化する方法はありますか?

4

1 に答える 1

3

PKCS#8 PEM でエンコードされた秘密鍵 (つまり、で始まる鍵文字列-----BEGIN RSA PRIVATE KEY-----)を変換できます。

var pem = readPEMKey(...); // read the string
var privKey = forge.pki.privateKeyFromPem(pem);
var pubKey = forge.pki.rsa.setPublicKey(privKey.n, privKey.e);

/*** public key encryption */    
var ciphertext = pubKey.encrypt("Secret");     
/*** private key decryption */  
var plaintext  = pkey.decrypt(ciphertext); 

次のように、鍵パラメーターを使用して最初から秘密鍵を作成することもできます (少し複雑です)。

var privKey = forge.pki.setPrivateKey(n, e, d, p, q, dP, dQ, qInv);

どこ :

  • n: キーモジュラス
  • e: プライベート指数
  • p: 最初のモジュラスの素因数
  • q: 2 番目のモジュラスの素因数
  • d: 公開指数
  • dP、dQ、qInv:中国剰余定理パラメータ

これらのパラメーターはすべてBigInteger、関数で作成されるはずforge.util.createBufferです。

于 2013-12-30T09:25:37.187 に答える