Javascript 如何将Uint8Array的对象转换为字符串?
我也有同样的问题。我看到了答案,但我不明白我该怎么做。还有其他建议吗 我的代码是:Javascript 如何将Uint8Array的对象转换为字符串?,javascript,reactjs,npm,Javascript,Reactjs,Npm,我也有同样的问题。我看到了答案,但我不明白我该怎么做。还有其他建议吗 我的代码是: var eccrypto = require("eccrypto"); var w,actual; var publicKey = Buffer.from([4, 86, 82, 58, 244, 11, 140, 41, 132, 245, 184, 162, 163, 98, 49, 119, 168, 235, 252, 50, 6, 91, 147, 191, 190, 61, 65, 63, 101,
var eccrypto = require("eccrypto");
var w,actual;
var publicKey = Buffer.from([4, 86, 82, 58, 244, 11, 140, 41, 132, 245, 184, 162, 163, 98, 49, 119, 168, 235, 252, 50, 6, 91, 147, 191, 190, 61, 65, 63, 101, 164, 132, 213, 188, 106, 26, 203, 171, 215, 240, 151, 7, 193, 10, 151, 103, 107, 1, 135, 117, 225, 5, 41, 55, 57, 18, 205, 98, 178, 82, 135, 170, 111, 188, 98, 57],'hex');
var privateKey= Buffer.from([238, 239, 199, 101, 188, 134, 13, 13, 195, 172, 125, 168, 225, 189, 72, 148, 225, 200, 127, 218, 204, 11, 150, 146, 180, 243, 195, 109, 200, 119, 50, 20],'hex');
eccrypto.encrypt(publicKey, Buffer.from("message")).then(function(encrypted) {
console.log(encrypted)
let encoded =JSON.stringify(encrypted)
w=encoded;
console.log(encoded)
actual = JSON.parse((encoded))
console.log(actual)
});
eccrypto.decrypt(privateKey,actual).then(function(plaintext) {
console.log("Message to part B:", plaintext.toString());
});
当我使用actual
变量时,我有以下错误:
Uncaught(承诺中)错误:公钥错误
这是加密的输出:
这是编码的输出:
这是实际的“我认为有些事情会改变,不是吗?”:
提前谢谢。我认为您需要从
缓冲区中删除“hex”编码参数。在解析过程中,您需要从发送一个reviver函数,该函数有条件地解析对象。如果您看到编码后的外观,您就会理解为什么需要以这种方式编写reviver函数
decrypt需要一个缓冲区,在缓冲区中提供JSON。也许这就是承诺失败的原因。尝试发送加密的eccrypto.decrypt(privateKey,encrypted),修复encrypt
中的错误后,请参阅以了解下一步problem@alchemist95实际上这是工作,但我需要以以下格式保存加密:let encoded=JSON.stringify(加密)
要在某个地方使用它,那么我想使用var-actual=JSON再次将其转换为原始格式。解析((编码))
是我的错吗?@Bergi非常感谢,但我使用async和Wait来处理这个问题,我认为它是有效的。@norah很酷,当您从切换到Wait
时,它应该会起作用,但是您在问题中发布的代码没有使用async
/wait
。它不起作用,实际变量它是一个对象,请查看问题以了解我的意思,我更新了它。谢谢,JSON.parse(JSON.stringify))正在修改缓冲区类型,这就是为什么解密会一直失败的原因。为了使decrypt()工作,您需要发送一个缓冲区类型的对象,而不是常规的JSON对象。您的意思是在我的例子中,我必须这样做:JSON.parse(encrypted)
?如果是,它会给出以下错误:SyntaxError:JSON中位置1处的意外标记o。。如果没有,你能给我进一步解释一下吗。非常感谢。如果我理解正确,您希望将加密转换为字符串。对的其次,您希望能够从该字符串中检索被封装的缓冲区。对吗?JSON.parse需要一个字符串,这就是它失败的原因。理想情况下,encoded=encrypted.toString('hex');const actual=缓冲区from(编码)代码>应该可以解决您的问题