编程语言
首页 > 编程语言> > JavaScript-Double hashing sha256 NOTworking !!如何转换为十六进制?

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函数.如何使用第一个哈希的字节输入进行双哈希?

SHA256 JavaScript function

解决方法:

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