javascript - NodeJS Forge - 将加密字节字符串转换为十六进制字符数组

标签 javascript node.js hex 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);

但没有得到正确的结果。以下是客户端的步骤。

  1. 使用十六进制编码将加密的字节数据转换为字符数组。
  2. 将字符数组转换为字符串。

我不确定这里出了什么问题。

最佳答案

当客户端请求十六进制字符串时,我将使用此函数将字节数组(“加密”)转换为字符串:

function toHexString(byteArray) {
  return Array.from(byteArray, function(byte) {
    return ('0' + (byte & 0xFF).toString(16)).slice(-2);
  }).join('')
}

关于javascript - NodeJS Forge - 将加密字节字符串转换为十六进制字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63724867/

相关文章:

javascript - 如何将JavaScript变量的内容插入到html中的特定位置?

java - 如何使用网络浏览器制作 P2P 流媒体?

javascript - 简单的 AJAX 脚本不会仅在主页上加载

java - 如何将BigInteger转换为固定长度的Hex?

javascript - 正则表达式 ("str","i") 和 '/' +"str"+'/i' 之间有什么区别

javascript - 带有异步请求的 NodeJS

node.js - 使用 NodeJs 在 Express 中执行渲染之前等待异步操作

node.js - Vue-Cli 不会安装

vim - 二进制编辑

Python 十六进制比较