· 7 years ago · Jun 22, 2018, 12:30 PM
1<script type="text/javascript" src="bower_components/crypto-js/crypto-js.js"></script>
2
3<html>
4<head>
5</head>
6<body>
7<p id="demo"></p>
8<script type="text/javascript" src="bower_components/crypto-js/crypto-js.js"></script>
9
10<script>
11var BuckarooHmac = (function () {
12 var self = {};
13
14 function getEncodedContent(content) {
15 if (content) {
16 var md5 = CryptoJS.MD5(content);
17 var base64 = CryptoJS.enc.Base64.stringify(md5);
18 return base64;
19 }
20
21 return content;
22 }
23
24 function getHash(websiteKey, secretKey, httpMethod, nonce, timeStamp, requestUri, content) {
25 var encodedContent = getEncodedContent(content);
26
27 var rawData = websiteKey + httpMethod + requestUri + timeStamp + nonce + encodedContent;
28 var hash = CryptoJS.HmacSHA256(rawData, secretKey);
29 var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
30
31 return hashInBase64;
32 }
33
34 function getTimeStamp() {
35 return Math.floor((new Date).getTime() / 1000);
36 }
37
38 function getNonce() {
39 var text = "";
40 var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
41 for (var i = 0; i < 16; i++) {
42 text += possible.charAt(Math.floor(Math.random() * possible.length));
43 }
44 return text;
45 }
46
47 self.GetAuthHeader = function (requestUri, websiteKey, secretKey, content, httpMethod) {
48 var nonce = getNonce();
49 var timeStamp = getTimeStamp();
50 content = content ? content : "";
51 var url = encodeURIComponent(requestUri).toLowerCase();
52 return "hmac " + websiteKey + ":" + getHash(websiteKey, secretKey, httpMethod, nonce, timeStamp, url, content) + ":" + nonce + ":" + timeStamp;
53 }
54
55document.getElementById("demo").innerHTML = self.GetAuthHeader();
56return self;
57}());
58
59</script>
60</body>
61</html>