Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将Uint8Array的对象转换为字符串?_Javascript_Reactjs_Npm - Fatal编程技术网

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(编码)应该可以解决您的问题