我尝试在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);
有没有一种方法可以使用给定的私钥作为字符串来解密伪造中的消息?
您可以转换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:中国余数定理参数
所有这些参数都应该是用forge.util.createBuffer
函数创建的BigInteger
。