1

我尝试在 php 中加密文本并使用 RSA 使用 javscript 解密。在 php 中我使用phpseclib. 对于我在forgedigitalbazaar 尝试过的客户站点。

根据文档,他们在一个对象中创建了一个私钥和一个公钥并开始了魔法。

 /*** 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:第二模素数
  • d: 公共指数
  • dP, dQ, qInv:中国剩余定理参数

所有这些参数都应该BigInteger使用该forge.util.createBuffer函数创建。

于 2013-12-30T09:25:37.187 回答