生成使用HMAC方法与谷歌Apps脚本加密散列值(Generate a keyed hash val

2019-10-19 18:44发布

有没有一种方法来创建谷歌Apps脚本的哈希值? 谷歌Apps脚本将运行在服务器端代码.gs代码文件。 该.gs文件用JavaScript编写。 因为JavaScript主要是一个客户端的语言,和任何加密客户端是不安全的,可能像HMAC为JavaScript不可用? 当我在做一个网络搜索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。 这没有任何意义! 哦! 我刚刚发现在维基百科上一些伪代码。

维基百科HMAC伪代码

这是我在重构它的尝试:

//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-一百六十零分之一百二十八需要被使用。

所以我做了SHA-1在JavaScript中搜索,发现这样的:

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

关于如何使用JavaScript创建一个HMAC值的任何信息,将不胜感激。 我可能会继续工作就可以了,在此期间。 即使它的JavaScript,这是一个谷歌.gs Apps脚本代码的文件,该文件在服务器上运行。

Answer 1:

Google Apps脚本有一个内置的Class Utility ,用于创建HMAC SHA256签名或令牌:

官方Google Apps脚本文件HMAC SHA256签名



文章来源: Generate a keyed hash value using the HMAC method with Google Apps Script