如何使用伪造在javascript中使用给定的私钥解密rsa-cipher

时间:2013-12-29 16:46:34

标签: javascript php encryption cryptography forge

我试图加密php中的文本并使用RSA使用javscript进行解密。在php中我使用phpseclib。 对于客户端网站,我已尝试使用digitalbazaar forge

根据文档,他们在一个对象中创建私钥和公钥,并启动魔术。

 /*** 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); 

是否有一种方法可以使用给定的私钥作为字符串来解密伪造中的消息?

1 个答案:

答案 0 :(得分:1)

您可以转换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:public exponent
  • dP,dQ,qInv:chinese remainder theorem参数

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