/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/var CryptoJS = CryptoJS ||function(g, l){var e ={},
d = e.lib ={},m=function(){},
k = d.Base ={extend:function(a){
m.prototype =this;var c =newm;
a && c.mixIn(a);
c.hasOwnProperty("init")||(c.init=function(){
c.$super.init.apply(this, arguments)});
c.init.prototype = c;
c.$super=this;return c
},create:function(){var a =this.extend();
a.init.apply(a, arguments);return a
},init:function(){},mixIn:function(a){for(var c in a) a.hasOwnProperty(c)&&(this[c]= a[c]);
a.hasOwnProperty("toString")&&(this.toString = a.toString)},clone:function(){returnthis.init.prototype.extend(this)}},
p = d.WordArray = k.extend({init:function(a, c){
a =this.words = a ||[];this.sigBytes = c != l ? c :4* a.length
},toString:function(a){return(a || n).stringify(this)},concat:function(a){var c =this.words,
q = a.words,
f =this.sigBytes;
a = a.sigBytes;this.clamp();if(f %4)for(var b =0; b < a; b++) c[f + b >>>2]|=(q[b >>>2]>>>24-8*(b %4)&255)<<24-8*((f + b)%4);elseif(65535< q.length)for(b =0; b < a; b +=4) c[f + b >>>2]= q[b >>>2];else c.push.apply(c, q);this.sigBytes += a;returnthis},clamp:function(){var a =this.words,
c =this.sigBytes;
a[c >>>2]&=4294967295<<32-8*(c %4);
a.length = g.ceil(c /4)},clone:function(){var a = k.clone.call(this);
a.words =this.words.slice(0);return a
},random:function(a){for(var c =[], b =0; b < a; b +=4) c.push(4294967296* g.random()|0);returnnewp.init(c, a)}}),
b = e.enc ={},
n = b.Hex ={stringify:function(a){var c = a.words;
a = a.sigBytes;for(var b =[], f =0; f < a; f++){var d = c[f >>>2]>>>24-8*(f %4)&255;
b.push((d >>>4).toString(16));
b.push((d &15).toString(16))}return b.join("")},parse:function(a){for(var c = a.length, b =[], f =0; f < c; f +=2) b[f >>>3]|=parseInt(a.substr(f,2),16)<<24-4*(f %8);returnnewp.init(b, c /2)}},
j = b.Latin1 ={stringify:function(a){var c = a.words;
a = a.sigBytes;for(var b =[], f =0; f < a; f++) b.push(String.fromCharCode(c[f >>>2]>>>24-8*(f %4)&255));return b.join("")},parse:function(a){for(var c = a.length, b =[], f =0; f < c; f++) b[f >>>2]|=(a.charCodeAt(f)&255)<<24-8*(f %4);returnnewp.init(b, c)}},
h = b.Utf8 ={stringify:function(a){try{returndecodeURIComponent(escape(j.stringify(a)))}catch(c){throwError("Malformed UTF-8 data");}},parse:function(a){return j.parse(unescape(encodeURIComponent(a)))}},
r = d.BufferedBlockAlgorithm = k.extend({reset:function(){this._data =newp.init;this._nDataBytes =0},_append:function(a){"string"==typeof a &&(a = h.parse(a));this._data.concat(a);this._nDataBytes += a.sigBytes
},_process:function(a){var c =this._data,
b = c.words,
f = c.sigBytes,
d =this.blockSize,
e = f /(4* d),
e = a ? g.ceil(e): g.max((e |0)-this._minBufferSize,0);
a = e * d;
f = g.min(4* a, f);if(a){for(var k =0; k < a; k += d)this._doProcessBlock(b, k);
k = b.splice(0, a);
c.sigBytes -= f
}returnnewp.init(k, f)},clone:function(){var a = k.clone.call(this);
a._data =this._data.clone();return a
},
_minBufferSize:0});
d.Hasher = r.extend({
cfg: k.extend(),init:function(a){this.cfg =this.cfg.extend(a);this.reset()},reset:function(){
r.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();returnthis},finalize:function(a){
a &&this._append(a);returnthis._doFinalize()},
blockSize:16,_createHelper:function(a){returnfunction(b, d){return(newa.init(d)).finalize(b)}},_createHmacHelper:function(a){returnfunction(b, d){return(news.HMAC.init(a,
d)).finalize(b)}}});var s = e.algo ={};return e
}(Math);(function(){var g = CryptoJS,
l = g.lib,
e = l.WordArray,
d = l.Hasher,
m =[],
l = g.algo.SHA1= d.extend({_doReset:function(){this._hash =newe.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(d, e){for(var b =this._hash.words, n = b[0], j = b[1], h = b[2], g = b[3], l = b[4], a =0;80> a; a++){if(16> a) m[a]= d[e + a]|0;else{var c = m[a -3]^ m[a -8]^ m[a -14]^ m[a -16];
m[a]= c <<1| c >>>31}
c =(n <<5| n >>>27)+ l + m[a];
c =20> a ? c +((j & h |~j & g)+1518500249):40> a ? c +((j ^ h ^ g)+1859775393):60> a ? c +((j & h | j & g | h & g)-1894007588): c +((j ^ h ^
g)-899497514);
l = g;
g = h;
h = j <<30| j >>>2;
j = n;
n = c
}
b[0]= b[0]+ n |0;
b[1]= b[1]+ j |0;
b[2]= b[2]+ h |0;
b[3]= b[3]+ g |0;
b[4]= b[4]+ l |0},_doFinalize:function(){var d =this._data,
e = d.words,
b =8*this._nDataBytes,
g =8* d.sigBytes;
e[g >>>5]|=128<<24- g %32;
e[(g +64>>>9<<4)+14]= Math.floor(b /4294967296);
e[(g +64>>>9<<4)+15]= b;
d.sigBytes =4* e.length;this._process();returnthis._hash
},clone:function(){var e = d.clone.call(this);
e._hash =this._hash.clone();return e
}});
g.SHA1= d._createHelper(l);
g.HmacSHA1 = d._createHmacHelper(l)})();(function(){var g = CryptoJS,
l = g.enc.Utf8;
g.algo.HMAC= g.lib.Base.extend({init:function(e, d){
e =this._hasher =newe.init;"string"==typeof d &&(d = l.parse(d));var g = e.blockSize,
k =4* g;
d.sigBytes > k &&(d = e.finalize(d));
d.clamp();for(var p =this._oKey = d.clone(), b =this._iKey = d.clone(), n = p.words, j = b.words, h =0; h < g; h++) n[h]^=1549556828, j[h]^=909522486;
p.sigBytes = b.sigBytes = k;this.reset()},reset:function(){var e =this._hasher;
e.reset();
e.update(this._iKey)},update:function(e){this._hasher.update(e);returnthis},finalize:function(e){var d =this._hasher;
e = d.finalize(e);
d.reset();return d.finalize(this._oKey.clone().concat(e))}})})();// 使用方法var hash = CryptoJS.HmacSHA1("value","key");// 第一个参数为加密字符串,第二个参数为公共秘钥
console.log(hash.toString());
HmacSHA1加密js算法实现HMACSHA1 是从 SHA1 哈希函数构造的一种算法,用于 HMAC。通过一个共有秘钥将加密字符串与其混合生成一个新的哈希串。/*CryptoJS v3.1.2code.google.com/p/crypto-js(c) 2009-2013 by Jeff Mott. All rights reserved.code.google.com/p/crypto-js/wiki/License*/var CryptoJS = CryptoJS || func