javascript - NodeJS Forge - 将加密的字节字符串转换为十六进制字符数组
问题描述
我正在使用 NodeJS-Forge 使用公钥加密字符串。
var text = 'testingtext';
var pemPublicKey = "*******";
var publicKeyFromPem = forge.pki.publicKeyFromPem(pemPublicKey);
const options = {
md: forge.md.sha256.create(),
mgf1: {
md: forge.md.sha1.create()
}
}
var encrypted = publicKeyFromPem.encrypt(text, 'RSAES-OAEP', options);
console.log(encrypted);
我得到加密字符串如下字节字符串。
ZIŸ0ÊQÁ@ìœÆ:Øê% ÞÂÚÇìm,ÿ™hµÅÇ4Ó¶/ çÎï_žå´Ï_rÓÆça:r¤—T{Zç{á£#ã?ݺh=ÝïW˜„HK²ù^Ǻè[áÔQQ€Ì„A¦¢R‡à*~`
éz©‹×„ÔDB™íFgèÞ$¯S®oE J
然后我需要获取十六进制字符串,然后是字符串格式。我正在使用下面的代码来获取这个散列字符串。
var buffer = forge.util.createBuffer(encrypted, 'raw');
var hashstring = buffer.toHex().toString().replace(/,/g, '');
console.log(hashstring);
但没有得到正确的结果。以下是客户端的步骤。
- 使用十六进制编码将加密的字节数据转换为字符数组。
- 将字符数组转换为字符串。
我不确定这里有什么问题。
解决方案
当客户要求十六进制字符串时,我将使用此函数将字节数组(“加密”)转换为字符串:
function toHexString(byteArray) {
return Array.from(byteArray, function(byte) {
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
}).join('')
}