JavaScript-Double hashing sha256 NOTworking !!如何转换为十六进制?
作者:互联网
因此,我一直尝试在Google Script中使用SHA256镜像双重哈希,但无法复制第二个哈希.第一个散列可以正确复制,但是随后必须将第一个哈希插入下一个摘要中,然后关闭某些内容.
var teststring = "hello";
var firsthash=Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, teststring);
var secondhash=Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, firsthash);
app.getElementById('balancelabel').setText("result: "+secondhash);
然后,我在在线转换器上查找第一哈希和第二哈希.第一个哈希符合以下期望,而第二个则不符合.我已经尝试了很多事情来尝试修改firsthash变量,但似乎无法使其工作.
这是散列应该是的:
你好
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824(sha-256的第一轮)
9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50(sha-256的第二轮)
我也一直在努力获取该字节的哈希值,并生成一个十六进制编码的字符串(不是base64,Google Script似乎确实支持该字符串).
有人可以帮助吗?
编辑:使用Utitilies.computeDigest似乎是不可能的,因为它仅接受字符串作为输入.但是,我刚刚检查了是否可以在Google Script中实现此JS sha256函数.如何使用第一个哈希的字节输入进行双哈希?
解决方法:
function sign(message){
message = message || "thisisteststring";
var signature = Utilities.computeDigest(
Utilities.DigestAlgorithm.SHA_1,
message,
Utilities.Charset.US_ASCII);
Logger.log(signature);
var signatureStr = '';
for (i = 0; i < signature.length; i++) {
var byte = signature[i];
if (byte < 0)
byte += 256;
var byteStr = byte.toString(16);
// Ensure we have 2 chars in our byte, pad with 0
if (byteStr.length == 1) byteStr = '0'+byteStr;
signatureStr += byteStr;
}
Logger.log(signatureStr);
return signatureStr;
}
您可以通过此函数将字符串转换为所需格式
标签:google-apps-script,javascript 来源: https://codeday.me/bug/20191123/2066711.html