我得到了我的私钥和 api 密钥,如何使用 javascript 创建 HMAC 签名.HMAC签名到底是什么

I have got my private key and api key,How to create HMAC signature using javascript.What actually is HMAC signature?

本文关键字:HMAC javascript 创建 签名 是什么 何使用 我的 私钥 密钥 api      更新时间:2023-09-26

我想在我的印度铁路的 SharePoint 应用程序中创建 HMAC-SHA1 签名,我应该如何创建以下代码不起作用,我的意思是当我复制粘贴我的 HMAC 签名到 URL 时,它会给出错误,{"error":"UNAUTHORIZED ACCESS. HMAC SIGNATURE MISMATCH."}。并且不显示json,我应该如何实现它,以下是我的代码。

<script src="lib/jsSHA/src/sha1.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>

<script type="text/javascript" >

var message = "json539ff0f815ca697c681fe01d32ba52e31234567890";
        var secret = "<my private key>";

        var crypto = CryptoJS.HmacSHA1(message, secret).toString(CryptoJS.enc.Base64);
    //var crypto = CryptoJS.HmacSHA1(message, secret).toString();
        alert(crypto);
        var shaObj = new jsSHA(message, "ASCII");
            alert("Welcome");
        var jssha = shaObj.getHMAC(secret, "ASCII", "SHA-1", "B64");
        alert(crypto + "'n" + jssha);

</script>

HMAC是一种哈希算法(它计算所提供消息的CRC代码,但基于加密)。HMAC 计算消息的哈希值并为其使用键。其目的是证明哈希值仅由知道密钥的人计算,而没有其他人计算。

HMAC 不匹配错误可能由多种原因引起:

  1. 您使用了错误的 HMAC 算法。在您的代码中,您使用 HMAC SHA1,但其中有很多
  2. 您使用了良好的 HMAC 算法,但使用了错误的 HMAC 参数。HMAC 算法通常有几个参数,如长度、链接模式,...
  3. 您使用了错误的邮件格式。在计算 HMAC 之前,可能存在某种邮件格式规则。
  4. 您使用了错误的密钥。

它是通过以下代码发生的,

<script src="lib/jsSHA/src/sha1.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>

var message = "mrjjson539ff0f815ca697c681fe01d32ba52e3";
var secret = "e439c4c1b7d7d2d52d11c0f1cb56552d";
//var crypto = CryptoJS.HmacSHA1(message, secret).toString(CryptoJS.enc.Base64);
var crypto = CryptoJS.HmacSHA1(message, secret).toString();
//var shaObj = new jsSHA(message, "ASCII");
//var jssha = shaObj.getHMAC(secret, "ASCII", "SHA-1", "B64");
alert("crypto answer is " + crypto);