JS前端的openssl命令

时间:2015-03-26 19:13:46

标签: javascript encryption openssl

您好我尝试使用crypto js在JS上复制这些命令但没有成功

openssl pkcs8 -inform DER -in #{file.key} -passin pass:#{password} -out myPrivate.key

用这个我获得一个rsa编码的私钥,我可以使用,计算它的模数并将其与另一个文件进行比较

openssl rsa -in myPrivate.key -noout -modulus
openssl x509 -inform DER -in certificate.cer -noout -modulus

如果这些2的输出相等,则用户被授权,但是我试图用forge在JS上复制这个并没有成功,当我在字符串上读取文件并尝试时,它会不断抛出错误将它们传递给它。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我只是简单地检查私钥的模数和公钥的模数是否相同,以确定用户是否被授权。话虽这么说,使用锻造,我相信这应该做你要求的:

function isAuthorized(privateKeyPem, password, certificatePem) {
  var privateKey = forge.pki.decryptRsaPrivateKey(
    privateKeyPem, password);

  var certificate = forge.pki.certificateFromPem(certificatePem);
  var publicKey = certificate.publicKey;

  // returns true when modulus is the same
  return privateKey.n.compareTo(publicKey.n) === 0;
}

如果您使用的是未加密的私钥,请改用(从PEM格式转换):

var privateKey = forge.pki.privateKeyFromPem(privateKeyPem);