我试图加密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);
是否有一种方法可以使用给定的私钥作为字符串来解密伪造中的消息?
答案 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);
其中:
所有这些参数都应该是使用BigInteger
函数创建的forge.util.createBuffer
。