【问题标题】:NodeJS Forge - Convert Encrypted byte string to hex character arrayNodeJS Forge - 将加密的字节字符串转换为十六进制字符数组
【发布时间】:2020-12-22 18:20:30
【问题描述】:

我正在使用 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. 将字符数组转换为字符串。

我不确定这里有什么问题。

【问题讨论】:

    标签: javascript node.js hex forge


    【解决方案1】:

    当客户要求一个十六进制字符串时,我会使用这个函数将字节数组('加密')转换为字符串:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-31
      • 2019-02-12
      • 2013-01-14
      • 2017-06-17
      相关资源
      最近更新 更多