PageSourceSearch

https://fujn.com/broadcast/js/sha512.js

js fujn.com collected 2026-10-10 01:37:51 UTC 12,986 bytes, 265 lines download raw bytes

1(function() {
2    /*
3     A JavaScript implementation of the SHA family of hashes, as defined in FIPS
4     PUB 180-2 as well as the corresponding HMAC implementation as defined in
5     FIPS PUB 198a
6
7     Copyright Brian Turek 2008-2012
8     Distributed under the BSD License
9     See http://caligatio.github.com/jsSHA/ for more information
10
11     Several functions taken from Paul Johnson
12    */
13    function n(a) {
14        throw a;
15    }
16    var q = null;
17
18    function s(a, b) {
19        this.a = a;
20        this.b = b
21    }
22
23    function u(a, b) {
24        var d = [],
25            h = (1 << b) - 1,
26            f = a.length * b,
27            g;
28        for (g = 0; g < f; g += b) d[g >>> 5] |= (a.charCodeAt(g / b) & h) << 32 - b - g % 32;
29        return {
30            value: d,
31            binLen: f
32        }
33    }
34
35    function x(a) {
36        var b = [],
37            d = a.length,
38            h, f;
39        0 !== d % 2 && n("String of HEX type must be in byte increments");
40        for (h = 0; h < d; h += 2) f = parseInt(a.substr(h, 2), 16), isNaN(f) && n("String of HEX type contains invalid characters"), b[h >>> 3] |= f << 24 - 4 * (h % 8);
41        return {
42            value: b,
43            binLen: 4 * d
44        }
45    }
46
47    function B(a) {
48        var b = [],
49            d = 0,
50            h, f, g, k, m; - 1 === a.search(/^[a-zA-Z0-9=+\/]+$/) && n("Invalid character in base-64 string");
51        h = a.indexOf("=");
52        a = a.replace(/\=/g, ""); - 1 !== h && h < a.length && n("Invalid '=' found in base-64 string");
53        for (f = 0; f < a.length; f += 4) {
54            m = a.substr(f, 4);
55            for (g = k = 0; g < m.length; g += 1) h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(m[g]), k |= h << 18 - 6 * g;
56            for (g = 0; g < m.length - 1; g += 1) b[d >> 2] |= (k >>> 16 - 8 * g & 255) << 24 - 8 * (d % 4), d += 1
57        }
58        return {
59            value: b,
60            binLen: 8 * d
61        }
62    }
63
64    function E(a, b) {
65        var d = "",
66            h = 4 * a.length,
67            f, g;
68        for (f = 0; f < h; f += 1) g = a[f >>> 2] >>> 8 * (3 - f % 4), d += "0123456789abcdef".charAt(g >>> 4 & 15) + "0123456789abcdef".charAt(g & 15);
69        return b.outputUpper ? d.toUpperCase() : d
70    }
71
72    function F(a, b) {
73        var d = "",
74            h = 4 * a.length,
75            f, g, k;
76        for (f = 0; f < h; f += 3) {
77            k = (a[f >>> 2] >>> 8 * (3 - f % 4) & 255) << 16 | (a[f + 1 >>> 2] >>> 8 * (3 - (f + 1) % 4) & 255) << 8 | a[f + 2 >>> 2] >>> 8 * (3 - (f + 2) % 4) & 255;
78            for (g = 0; 4 > g; g += 1) d = 8 * f + 6 * g <= 32 * a.length ? d + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k >>> 6 * (3 - g) & 63) : d + b.b64Pad
79        }
80        return d
81    }
82
83    function G(a) {
84        var b = {
85            outputUpper: !1,
86            b64Pad: "="
87        };
88        try {
89            a.hasOwnProperty("outputUpper") && (b.outputUpper = a.outputUpper), a.hasOwnProperty("b64Pad") && (b.b64Pad = a.b64Pad)
90        } catch (d) {}
91        "boolean" !== typeof b.outputUpper && n("Invalid outputUpper formatting option");
92        "string" !== typeof b.b64Pad && n("Invalid b64Pad formatting option");
93        return b
94    }
95
96    function H(a, b) {
97        var d = q,
98            d = new s(a.a, a.b);
99        return d = 32 >= b ? new s(d.a >>> b | d.b << 32 - b & 4294967295, d.b >>> b | d.a << 32 - b & 4294967295) : new s(d.b >>> b - 32 | d.a << 64 - b & 4294967295, d.a >>> b - 32 | d.b << 64 - b & 4294967295)
100    }
101
102    function I(a, b) {
103        var d = q;
104        return d = 32 >= b ? new s(a.a >>> b, a.b >>> b | a.a << 32 - b & 4294967295) : new s(0, a.a >>> b - 32)
105    }
106
107    function J(a, b, d) {
108        return new s(a.a & b.a ^ ~a.a & d.a, a.b & b.b ^ ~a.b & d.b)
109    }
110
111    function U(a, b, d) {
112        return new s(a.a & b.a ^ a.a & d.a ^ b.a & d.a, a.b & b.b ^ a.b & d.b ^ b.b & d.b)
113    }
114
115    function V(a) {
116        var b = H(a, 28),
117            d = H(a, 34);
118        a = H(a, 39);
119        return new s(b.a ^ d.a ^ a.a, b.b ^ d.b ^ a.b)
120    }
121
122    function W(a) {
123        var b = H(a, 14),
124            d = H(a, 18);
125        a = H(a, 41);
126        return new s(b.a ^ d.a ^ a.a, b.b ^ d.b ^ a.b)
127    }
128
129    function X(a) {
130        var b = H(a, 1),
131            d = H(a, 8);
132        a = I(a, 7);
133        return new s(b.a ^ d.a ^ a.a, b.b ^ d.b ^ a.b)
134    }
135
136    function Y(a) {
137        var b = H(a, 19),
138            d = H(a, 61);
139        a = I(a, 6);
140        return new s(b.a ^ d.a ^ a.a, b.b ^ d.b ^ a.b)
141    }
142
143    function Z(a, b) {
144        var d, h, f;
145        d = (a.b & 65535) + (b.b & 65535);
146        h = (a.b >>> 16) + (b.b >>> 16) + (d >>> 16);
147        f = (h & 65535) << 16 | d & 65535;
148        d = (a.a & 65535) + (b.a & 65535) + (h >>> 16);
149        h = (a.a >>> 16) + (b.a >>> 16) + (d >>> 16);
150        return new s((h & 65535) << 16 | d & 65535, f)
151    }
152
153    function aa(a, b, d, h) {
154        var f, g, k;
155        f = (a.b & 65535) + (b.b & 65535) + (d.b & 65535) + (h.b & 65535);
156        g = (a.b >>> 16) + (b.b >>> 16) + (d.b >>> 16) + (h.b >>> 16) + (f >>> 16);
157        k = (g & 65535) << 16 | f & 65535;
158        f = (a.a & 65535) + (b.a & 65535) + (d.a & 65535) + (h.a & 65535) + (g >>> 16);
159        g = (a.a >>> 16) + (b.a >>> 16) + (d.a >>> 16) + (h.a >>> 16) + (f >>> 16);
160        return new s((g & 65535) << 16 | f & 65535, k)
161    }
162
163    function ba(a, b, d, h, f) {
164        var g, k, m;
165        g = (a.b & 65535) + (b.b & 65535) + (d.b & 65535) + (h.b & 65535) + (f.b & 65535);
166        k = (a.b >>> 16) + (b.b >>> 16) + (d.b >>> 16) + (h.b >>> 16) + (f.b >>> 16) + (g >>> 16);
167        m = (k & 65535) << 16 | g & 65535;
168        g = (a.a & 65535) + (b.a & 65535) + (d.a & 65535) + (h.a & 65535) + (f.a & 65535) + (k >>> 16);
169        k = (a.a >>> 16) + (b.a >>> 16) + (d.a >>> 16) + (h.a >>> 16) + (f.a >>> 16) + (g >>> 16);
170        return new s((k & 65535) << 16 | g & 65535, m)
171    }
172
173    function $(a, b, d) {
174        var h, f, g, k, m, j, A, C, K, e, L, v, l, M, t, p, y, z, r, N, O, P, Q, R, c, S, w = [],
175            T, D;
176        "SHA-384" === d || "SHA-512" === d ? (L = 80, h = (b + 128 >>> 10 << 5) + 31, M = 32, t = 2, c = s, p = Z, y = aa, z = ba, r = X, N = Y, O = V, P = W, R = U, Q = J, S = [new c(1116352408, 3609767458), new c(1899447441, 602891725), new c(3049323471, 3964484399), new c(3921009573, 2173295548), new c(961987163, 4081628472), new c(1508970993, 3053834265), new c(2453635748, 2937671579), new c(2870763221, 3664609560), new c(3624381080, 2734883394), new c(310598401, 1164996542), new c(607225278, 1323610764),
177            new c(1426881987, 3590304994), new c(1925078388, 4068182383), new c(2162078206, 991336113), new c(2614888103, 633803317), new c(3248222580, 3479774868), new c(3835390401, 2666613458), new c(4022224774, 944711139), new c(264347078, 2341262773), new c(604807628, 2007800933), new c(770255983, 1495990901), new c(1249150122, 1856431235), new c(1555081692, 3175218132), new c(1996064986, 2198950837), new c(2554220882, 3999719339), new c(2821834349, 766784016), new c(2952996808, 2566594879), new c(3210313671, 3203337956), new c(3336571891,
178                1034457026), new c(3584528711, 2466948901), new c(113926993, 3758326383), new c(338241895, 168717936), new c(666307205, 1188179964), new c(773529912, 1546045734), new c(1294757372, 1522805485), new c(1396182291, 2643833823), new c(1695183700, 2343527390), new c(1986661051, 1014477480), new c(2177026350, 1206759142), new c(2456956037, 344077627), new c(2730485921, 1290863460), new c(2820302411, 3158454273), new c(3259730800, 3505952657), new c(3345764771, 106217008), new c(3516065817, 3606008344), new c(3600352804, 1432725776), new c(4094571909,
179                1467031594), new c(275423344, 851169720), new c(430227734, 3100823752), new c(506948616, 1363258195), new c(659060556, 3750685593), new c(883997877, 3785050280), new c(958139571, 3318307427), new c(1322822218, 3812723403), new c(1537002063, 2003034995), new c(1747873779, 3602036899), new c(1955562222, 1575990012), new c(2024104815, 1125592928), new c(2227730452, 2716904306), new c(2361852424, 442776044), new c(2428436474, 593698344), new c(2756734187, 3733110249), new c(3204031479, 2999351573), new c(3329325298, 3815920427), new c(3391569614,
180                3928383900), new c(3515267271, 566280711), new c(3940187606, 3454069534), new c(4118630271, 4000239992), new c(116418474, 1914138554), new c(174292421, 2731055270), new c(289380356, 3203993006), new c(460393269, 320620315), new c(685471733, 587496836), new c(852142971, 1086792851), new c(1017036298, 365543100), new c(1126000580, 2618297676), new c(1288033470, 3409855158), new c(1501505948, 4234509866), new c(1607167915, 987167468), new c(1816402316, 1246189591)
181        ], e = "SHA-384" === d ? [new c(3418070365, 3238371032), new c(1654270250, 914150663),
182            new c(2438529370, 812702999), new c(355462360, 4144912697), new c(1731405415, 4290775857), new c(41048885895, 1750603025), new c(3675008525, 1694076839), new c(1203062813, 3204075428)
183        ] : [new c(1779033703, 4089235720), new c(3144134277, 2227873595), new c(1013904242, 4271175723), new c(2773480762, 1595750129), new c(1359893119, 2917565137), new c(2600822924, 725511199), new c(528734635, 4215389547), new c(1541459225, 327033209)]) : n("Unexpected error in SHA-2 implementation");
184        a[b >>> 5] |= 128 << 24 - b % 32;
185        a[h] = b;
186        T = a.length;
187        for (v = 0; v <
188            T; v += M) {
189            b = e[0];
190            h = e[1];
191            f = e[2];
192            g = e[3];
193            k = e[4];
194            m = e[5];
195            j = e[6];
196            A = e[7];
197            for (l = 0; l < L; l += 1) w[l] = 16 > l ? new c(a[l * t + v], a[l * t + v + 1]) : y(N(w[l - 2]), w[l - 7], r(w[l - 15]), w[l - 16]), C = z(A, P(k), Q(k, m, j), S[l], w[l]), K = p(O(b), R(b, h, f)), A = j, j = m, m = k, k = p(g, C), g = f, f = h, h = b, b = p(C, K);
198            e[0] = p(b, e[0]);
199            e[1] = p(h, e[1]);
200            e[2] = p(f, e[2]);
201            e[3] = p(g, e[3]);
202            e[4] = p(k, e[4]);
203            e[5] = p(m, e[5]);
204            e[6] = p(j, e[6]);
205            e[7] = p(A, e[7])
206        }
207        "SHA-384" === d ? D = [e[0].a, e[0].b, e[1].a, e[1].b, e[2].a, e[2].b, e[3].a, e[3].b, e[4].a, e[4].b, e[5].a, e[5].b] : "SHA-512" === d ? D = [e[0].a, e[0].b,
208            e[1].a, e[1].b, e[2].a, e[2].b, e[3].a, e[3].b, e[4].a, e[4].b, e[5].a, e[5].b, e[6].a, e[6].b, e[7].a, e[7].b
209        ] : n("Unexpected error in SHA-2 implementation");
210        return D
211    }
212    window.jsSHA = function(a, b, d) {
213        var h = q,
214            f = q,
215            g = 0,
216            k = [0],
217            m = 0,
218            j = q,
219            m = "undefined" !== typeof d ? d : 8;
220        8 === m || 16 === m || n("charSize must be 8 or 16");
221        "HEX" === b ? (0 !== a.length % 2 && n("srcString of HEX type must be in byte increments"), j = x(a), g = j.binLen, k = j.value) : "ASCII" === b || "TEXT" === b ? (j = u(a, m), g = j.binLen, k = j.value) : "B64" === b ? (j = B(a), g = j.binLen, k = j.value) : n("inputFormat must be HEX, TEXT, ASCII, or B64");
222        this.getHash = function(a, b, d) {
223            var e = q,
224                m = k.slice(),
225                j = "";
226            switch (b) {
227                case "HEX":
228                    e = E;
229                    break;
230                case "B64":
231                    e = F;
232                    break;
233                default:
234                    n("format must be HEX or B64")
235            }
236            "SHA-384" ===
237            a ? (q === h && (h = $(m, g, a)), j = e(h, G(d))) : "SHA-512" === a ? (q === f && (f = $(m, g, a)), j = e(f, G(d))) : n("Chosen SHA variant is not supported");
238            return j
239        };
240        this.getHMAC = function(a, b, d, e, f) {
241            var h, l, j, t, p, y = [],
242                z = [],
243                r = q;
244            switch (e) {
245                case "HEX":
246                    h = E;
247                    break;
248                case "B64":
249                    h = F;
250                    break;
251                default:
252                    n("outputFormat must be HEX or B64")
253            }
254            "SHA-384" === d ? (j = 128, p = 384) : "SHA-512" === d ? (j = 128, p = 512) : n("Chosen SHA variant is not supported");
255            "HEX" === b ? (r = x(a), t = r.binLen, l = r.value) : "ASCII" === b || "TEXT" === b ? (r = u(a, m), t = r.binLen, l = r.value) : "B64" === b ? (r = B(a),
256                t = r.binLen, l = r.value) : n("inputFormat must be HEX, TEXT, ASCII, or B64");
257            a = 8 * j;
258            b = j / 4 - 1;
259            j < t / 8 ? (l = $(l, t, d), l[b] &= 4294967040) : j > t / 8 && (l[b] &= 4294967040);
260            for (j = 0; j <= b; j += 1) y[j] = l[j] ^ 909522486, z[j] = l[j] ^ 1549556828;
261            d = $(z.concat($(y.concat(k), a + g, d)), a + p, d);
262            return h(d, G(f))
263        }
264    };
265})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.