我有我的私钥和api密钥,如何使用javascript创建HMAC签名。实际上是HMAC签名?

时间:2014-04-07 10:03:04

标签: javascript sharepoint hmacsha1

我想在印度铁路公司的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>

2 个答案:

答案 0 :(得分:0)

HMAC是一种哈希算法(它为提供的消息计算CRC代码,但在加密的基础上)。 HMAC计算消息的哈希值并使用密钥。它的目的是证明哈希只由知道密钥的人和其他任何人计算。

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

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

答案 1 :(得分:0)

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

<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);