有没有一种方法可以在Google Apps脚本中创建哈希值? Google Apps脚本将在.gs代码文件中运行服务器端代码。 .gs文件是用JavaScript编写的。因为JavaScript主要是一种客户端语言,并且加密客户端的任何内容都不安全,所以可能无法使用HMAC for Java之类的东西吗?当我在hmac in javascript上进行网络搜索时,我得到的第一件事是crypto-js。但看来我需要链接到<script>标记中的某些服务:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-md5.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha1.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha512.js"></script>
<script>
    var hash = CryptoJS.HmacMD5("Message", "Secret Passphrase");
    var hash = CryptoJS.HmacSHA1("Message", "Secret Passphrase");
    var hash = CryptoJS.HmacSHA256("Message", "Secret Passphrase");
    var hash = CryptoJS.HmacSHA512("Message", "Secret Passphrase");
</script>


Secret Passphrase将在您的客户端HTML中。那没有任何意义!哦!我刚刚在Wikipedia中找到了一些伪代码。

Wikipedia HMAC pseudo Code

这是我对其进行重构的尝试:

//blocksize is the size in bytes and is set to 64 bytes.
//byte size of any UTF-8 string

function byteCount(s) {
  return encodeURI(s).split(/%..|./).length - 1;
};

function hmac(key, message) {
    var blocksize = 64;
    var keyLngth = byteCount(key);

    if (keyLngth > blocksize) {
        key = hash(key); // keys longer than blocksize are shortened
    }
    else if (keyLngth < blocksize) {
        key = key + [0x00 * (blocksize - keyLngth)]; // keys shorter than blocksize are zero-padded
    };

    var o_key_pad = [0x5c * blocksize] ⊕ key; // Where blocksize is that of the underlying hash function
    var i_key_pad = [0x36 * blocksize] ⊕ key; // Where ⊕ is exclusive or (XOR)

    return hash(o_key_pad + hash(i_key_pad + message));
};


我想无论伪代码在哪里声明:hash(key)以下哈希函数之一:SHA-1,MD5,RIPEMD-128 / 160需要使用。

因此,我在JavaScript中对SHA-1进行了搜索,结果发现:

http://www.movable-type.co.uk

任何有关如何使用Javascript创建HMAC值的信息将不胜感激。同时,我可能会继续努力。即使是Javascript,它也是一个Google .gs Apps脚本代码文件,该文件在服务器上运行。

最佳答案

Apps脚本具有内置的Class Utility,用于创建HMAC Sha256签名或令牌:

Official Apps Script Documentation HMAC Sha256 signature

关于javascript - 使用HMAC方法和Google Apps脚本生成键控哈希值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22889270/

10-12 13:10