Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 尝试解密使用密码短语安全的私钥_Node.js_Encryption - Fatal编程技术网

Node.js 尝试解密使用密码短语安全的私钥

Node.js 尝试解密使用密码短语安全的私钥,node.js,encryption,Node.js,Encryption,我尝试使用加密nodejs模块。但我没有成功地让它工作 import*作为来自“crypto”的加密; 从“crypto”导入{RsaPrivateKey}; const privateKey=crypto.privateDecrypt(rsaPrivateKey,Buffer.from(“”)).toString(); 我有密码。我需要这样做,以便我可以在AWS中导入我的证书。有人有主意吗 我知道我们可以在golang用 如果x509.IsEncryptedPEMBlock(块){ der,

我尝试使用加密
nodejs
模块。但我没有成功地让它工作

import*作为来自“crypto”的加密;
从“crypto”导入{RsaPrivateKey};
const privateKey=crypto.privateDecrypt(rsaPrivateKey,Buffer.from(“”)).toString();
我有密码。我需要这样做,以便我可以在AWS中导入我的证书。有人有主意吗

我知道我们可以在golang用

如果x509.IsEncryptedPEMBlock(块){
der,错误传递:=x509.DecryptPEMBlock(块,[]字节(o.passphrase))

使用NodeJS的加密模块,使用两个用于导入加密密钥和导出未加密密钥的函数,很容易实现解密:

crypto = require('crypto');

encryptedPkcs1 = `-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,B2FBBDCE627586CB04423335D9D4EC59

ekUVpHooHO3d5Ao0gTovipGK9DAP0MBXffEvBrtvcNcxhd9vaE6PsIxQPGwxnc/C
v9Y5RiClNwgZHtRol+i+QeZYLQHUQdOs3toymUgpIcN19IHyxU4C17PCWLZQpuVy
7hcD150dxkGv6Ai53QHIIl4Zybk6neBSbHpJtCnKjRMc6dNONpmFGqO/9SCmH/Bv
lHtPNZ9VsCDI67OO9fMQ3AqfpeGmCwJF8HgXf0nquQH1BJkZsYc4bq/xfGLFII0N
odWD1XEnwL4DWQ1r2wH0IvAXyVQUpwUmDeuDeeslQe9S5IERxovlFKIGsJnIrDLu
j420LLuiMjvj4Cipl91zZjlypsxCXgP7Ta8SDNNWo6yi0qAk1VbMAaeu2GsI6mn5
IUmGr0mkZsSxGFSc9614z+2aJjXEuX1jZ1q83nnZMTz0zEKu/0B6M5h+2B7kG5W1
-----END RSA PRIVATE KEY-----`

encryptedKey = crypto.createPrivateKey({
  key: encryptedPkcs1,
  passphrase: 'myPassword'})

decryptedKey = encryptedKey.export({
  format: 'pem',
  type: 'pkcs1',})
请注意,出于安全考虑,目前的实际情况下,密钥不应小于2048位。此处的512位密钥仅用于测试

输出为:

-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBAL2D8iI9YRKCxsqDrw9WDFddW+xD2FBx383pxiW4el8M2OangbWH
FzOf8Y8ZQiw5tfocUqTvMhOcS1gThT5zUusCAwEAAQJBAJjTO0IzPwF/ZjFPKa9z
U3ZsOcF4IIsWmUTivMAUWNImFS0XiecmhiOpdgjP4LQ5gkphcC7f9VYS6Xw4suen
ZOECIQDp3GtcMdHJzQKn4fDnmTStHeEVDoqvs2tVE/HaWoYhMQIhAM900ZGxJIxK
GYrdkGU2ETvvkyRH7JStGlj3dIJDGE7bAiEAiSIFmpRkLm+XJRbqiwRdzT3+JLjY
Plt5jvQZGC+JA6ECICzJB0TwfPdcN89mrXlsBqRtv9IhRM2D4SA7q4dDfMfpAiEA
s9/2kHpLVmtpEDyw+u4Qrgt6/xUR1B39nceE1bEBo+U=
-----END RSA PRIVATE KEY----- 

由于这似乎是一种“一次性转换”,我建议使用OpenSSL完成此任务。我的加密文件名为“privatekey_pkcs1_2048_aes256_123456.pem”,因此完整的命令行是openssl rsa-in-privatekey_pkcs1_2048_aes256_123456.pem-out-privatekey_pkcs1_2048_unencrypted.pem,接下来您需要键入密码短语,然后收到未加密的私钥文件“privatekey_pkcs1_2048_unencrypted.pem”是的,这正是我最后一直在做的。忘了再看看这里。这和我现在做的完全一样
-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBAL2D8iI9YRKCxsqDrw9WDFddW+xD2FBx383pxiW4el8M2OangbWH
FzOf8Y8ZQiw5tfocUqTvMhOcS1gThT5zUusCAwEAAQJBAJjTO0IzPwF/ZjFPKa9z
U3ZsOcF4IIsWmUTivMAUWNImFS0XiecmhiOpdgjP4LQ5gkphcC7f9VYS6Xw4suen
ZOECIQDp3GtcMdHJzQKn4fDnmTStHeEVDoqvs2tVE/HaWoYhMQIhAM900ZGxJIxK
GYrdkGU2ETvvkyRH7JStGlj3dIJDGE7bAiEAiSIFmpRkLm+XJRbqiwRdzT3+JLjY
Plt5jvQZGC+JA6ECICzJB0TwfPdcN89mrXlsBqRtv9IhRM2D4SA7q4dDfMfpAiEA
s9/2kHpLVmtpEDyw+u4Qrgt6/xUR1B39nceE1bEBo+U=
-----END RSA PRIVATE KEY-----