gpt4 book ai didi

node.js - 如何检测RSA私钥在 Node 中有密码

转载 作者:搜寻专家 更新时间:2023-11-01 00:03:40 26 4
gpt4 key购买 nike

我的 Node 版本:v10.15.3

我尝试使用类似 crypto.privateDecrypt(privateKey, Buffer.from(encryptData, 'utf8')) 的 api我收到一个错误:Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt

我知道我们可以传递像 {key:privateKey, passphrase: 'im_passphrase'} 这样的密码,但我想检测这个私钥是否有密码。

有什么想法吗?

最佳答案

这似乎无法通过原生 crypto 模块实现。但截至目前 question在证券交易所。您可以检查读取文件,这可以通过文件系统 (fs) 模块来实现。

const fs = require('fs');

const get_line = (filename, line_no, callback) => {
const stream = fs.createReadStream(filename, {
flags: 'r',
encoding: 'utf-8',
fd: null,
mode: 0666,
bufferSize: 64 * 1024
});

let fileData = '';

stream.on('data', (data) => {
fileData += data;

// The next lines should be improved
let lines = fileData.split("\n");

if(lines.length >= +line_no){
stream.destroy();
callback(null, lines[+line_no]);
}
});

stream.on('error', () => {
callback('Error', null);
});

stream.on('end', () => {
callback('File end reached without finding line', null);
});
}

const hasPassphrase = (keyFile, callback) => {
get_line(keyFile, 1, (err, line) => {
if (line.indexOf("Proc-Type:") === -1) {
callback(false);
} else {
callback(true);
}
})
}

hasPassphrase('./ssh-Key', hasPasspharse => {
// your logic here
});

你的想法是正确的,提取文件的第二行并检查是否有 Proc-Type: header 。根据您的需要编辑此代码。

关于node.js - 如何检测RSA私钥在 Node 中有密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55528574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com