Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /js/hashing.js

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations) (download) (as text)
Sun Aug 9 04:27:21 2020 UTC (3 years, 9 months ago) by achmadkoko
File MIME type: application/x-javascript
File size: 3073 byte(s)
version  1.0
1 achmadkoko 1 var Sha1 = {};
2    
3     Sha1.hash = function(msg, utf8encode) {
4     utf8encode = (typeof utf8encode == 'undefined') ? true : utf8encode;
5    
6     if (utf8encode) msg = Utf8.encode(msg);
7    
8     var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
9    
10     msg += String.fromCharCode(0x80);
11    
12     var l = msg.length/4 + 2;
13     var N = Math.ceil(l/16);
14     var M = new Array(N);
15    
16     for (var i=0; i<N; i++) {
17     M[i] = new Array(16);
18     for (var j=0; j<16; j++) {
19     M[i][j] = (msg.charCodeAt(i*64+j*4)<<24) | (msg.charCodeAt(i*64+j*4+1)<<16) |
20     (msg.charCodeAt(i*64+j*4+2)<<8) | (msg.charCodeAt(i*64+j*4+3));
21     }
22     }
23    
24     M[N-1][14] = ((msg.length-1)*8) / Math.pow(2, 32); M[N-1][14] = Math.floor(M[N-1][14])
25     M[N-1][15] = ((msg.length-1)*8) & 0xffffffff;
26    
27     var H0 = 0x67452301;
28     var H1 = 0xefcdab89;
29     var H2 = 0x98badcfe;
30     var H3 = 0x10325476;
31     var H4 = 0xc3d2e1f0;
32    
33     var W = new Array(80); var a, b, c, d, e;
34     for (var i=0; i<N; i++) {
35    
36     for (var t=0; t<16; t++) W[t] = M[i][t];
37     for (var t=16; t<80; t++) W[t] = Sha1.ROTL(W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1);
38    
39     a = H0; b = H1; c = H2; d = H3; e = H4;
40    
41     for (var t=0; t<80; t++) {
42     var s = Math.floor(t/20);
43     var T = (Sha1.ROTL(a,5) + Sha1.f(s,b,c,d) + e + K[s] + W[t]) & 0xffffffff;
44     e = d;
45     d = c;
46     c = Sha1.ROTL(b, 30);
47     b = a;
48     a = T;
49     }
50    
51     H0 = (H0+a) & 0xffffffff;
52     H1 = (H1+b) & 0xffffffff;
53     H2 = (H2+c) & 0xffffffff;
54     H3 = (H3+d) & 0xffffffff;
55     H4 = (H4+e) & 0xffffffff;
56     }
57    
58     return Sha1.toHexStr(H0) + Sha1.toHexStr(H1) +
59     Sha1.toHexStr(H2) + Sha1.toHexStr(H3) + Sha1.toHexStr(H4);
60     }
61    
62     Sha1.f = function(s, x, y, z) {
63     switch (s) {
64     case 0: return (x & y) ^ (~x & z); // Ch()
65     case 1: return x ^ y ^ z; // Parity()
66     case 2: return (x & y) ^ (x & z) ^ (y & z); // Maj()
67     case 3: return x ^ y ^ z; // Parity()
68     }
69     }
70    
71     Sha1.ROTL = function(x, n) {
72     return (x<<n) | (x>>>(32-n));
73     }
74    
75     Sha1.toHexStr = function(n) {
76     var s="", v;
77     for (var i=7; i>=0; i--) { v = (n>>>(i*4)) & 0xf; s += v.toString(16); }
78     return s;
79     }
80    
81    
82     var Utf8 = {};
83    
84     Utf8.encode = function(strUni) {
85    
86     var strUtf = strUni.replace(
87     /[\u0080-\u07ff]/g,
88     function(c) {
89     var cc = c.charCodeAt(0);
90     return String.fromCharCode(0xc0 | cc>>6, 0x80 | cc&0x3f); }
91     );
92     strUtf = strUtf.replace(
93     /[\u0800-\uffff]/g,
94     function(c) {
95     var cc = c.charCodeAt(0);
96     return String.fromCharCode(0xe0 | cc>>12, 0x80 | cc>>6&0x3F, 0x80 | cc&0x3f); }
97     );
98     return strUtf;
99     }
100    
101     Utf8.decode = function(strUtf) {
102    
103     var strUni = strUtf.replace(
104     /[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g,
105     function(c) {
106     var cc = ((c.charCodeAt(0)&0x0f)<<12) | ((c.charCodeAt(1)&0x3f)<<6) | ( c.charCodeAt(2)&0x3f);
107     return String.fromCharCode(cc); }
108     );
109     strUni = strUni.replace(
110     /[\u00c0-\u00df][\u0080-\u00bf]/g,
111     function(c) {
112     var cc = (c.charCodeAt(0)&0x1f)<<6 | c.charCodeAt(1)&0x3f;
113     return String.fromCharCode(cc); }
114     );
115     return strUni;
116     }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26