JavaScript sha1签名

  1. function add(x, y) {  
  2.     return((x & 0x7FFFFFFF) + (y & 0x7FFFFFFF)) ^ (x & 0x80000000) ^ (y & 0x80000000);  
  3. }  
  4.   
  5. function SHA1hex(num) {  
  6.     var sHEXChars = "0123456789abcdef";  
  7.     var str = "";  
  8.     for(var j = 7; j >= 0; j--)  
  9.         str += sHEXChars.charAt((num >> (j * 4)) & 0x0F);  
  10.     return str;  
  11. }  
  12.   
  13. function AlignSHA1(sIn) {  
  14.     var nblk = ((sIn.length + 8) >> 6) + 1,  
  15.         blks = new Array(nblk * 16);  
  16.     for(var i = 0; i < nblk * 16; i++) blks[i] = 0;  
  17.     for(i = 0; i < sIn.length; i++)  
  18.         blks[i >> 2] |= sIn.charCodeAt(i) << (24 - (i & 3) * 8);  
  19.     blks[i >> 2] |= 0x80 << (24 - (i & 3) * 8);  
  20.     blks[nblk * 16 - 1] = sIn.length * 8;  
  21.     return blks;  
  22. }  
  23.   
  24. function rol(num, cnt) {  
  25.     return(num << cnt) | (num >>> (32 - cnt));  
  26. }  
  27.   
  28. function ft(t, b, c, d) {  
  29.     if(t < 20) return(b & c) | ((~b) & d);  
  30.     if(t < 40) return b ^ c ^ d;  
  31.     if(t < 60) return(b & c) | (b & d) | (c & d);  
  32.     return b ^ c ^ d;  
  33. }  
  34.   
  35. function kt(t) {  
  36.     return(t < 20) ? 1518500249 : (t < 40) ? 1859775393 :  
  37.         (t < 60) ? -1894007588 : -899497514;  
  38. }  
  39.   
  40. function SHA1(sIn) {  
  41.     var x = AlignSHA1(sIn);  
  42.     var w = new Array(80);  
  43.     var a = 1732584193;  
  44.     var b = -271733879;  
  45.     var c = -1732584194;  
  46.     var d = 271733878;  
  47.     var e = -1009589776;  
  48.     for(var i = 0; i < x.length; i += 16) {  
  49.         var olda = a;  
  50.         var oldb = b;  
  51.         var oldc = c;  
  52.         var oldd = d;  
  53.         var olde = e;  
  54.         for(var j = 0; j < 80; j++) {  
  55.             if(j < 16) w[j] = x[i + j];  
  56.             else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);  
  57.             t = add(add(rol(a, 5), ft(j, b, c, d)), add(add(e, w[j]), kt(j)));  
  58.             e = d;  
  59.             d = c;  
  60.             c = rol(b, 30);  
  61.             b = a;  
  62.             a = t;  
  63.         }  
  64.         a = add(a, olda);  
  65.         b = add(b, oldb);  
  66.         c = add(c, oldc);  
  67.         d = add(d, oldd);  
  68.         e = add(e, olde);  
  69.     }  
  70.     SHA1Value = SHA1hex(a) + SHA1hex(b) + SHA1hex(c) + SHA1hex(d) + SHA1hex(e);  
  71.     return SHA1Value.toUpperCase();  
  72. }  
  73.   
  74. function SHA2(sIn) {  
  75.     return SHA1(sIn).toLowerCase();  
  76. }


  77. SHA1("要加密的内容");
  78. SHA2("要加密的内容");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值