tinyhmacmd5 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/browser.min.js +1 -1
- package/main.js +56 -84
- package/package.json +2 -2
package/README.md
CHANGED
package/browser.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @license https://github.com/bddjr/tinyhmacmd5/blob/HEAD/LICENSE */
|
|
2
|
-
{let r="length",e=16,n=2**32,t=
|
|
2
|
+
{let r="length",e=16,n=2**32,t=1732584193,o=271733878,a=~t,f=~o,u=Math,i=u.floor,l=[738695,669989,770404,703814],d=Array(64),s=(s,v)=>{var y,c,g,h,A,w=0,b=i((v+64)/512)*e+14,m=[t,f,a,o],p=[...m],x=r=>m[3&++A];for(s[i(v/32)]|=128<<v%32,s[b]=0|v,s[b+1]=0|v/n;w<s[r];w+=e){for(A=b=0;b<64;A-=6)m[3&A]=(c=x(),g=x(),h=x(),0|((c=((y=b>>4)?y>1?y>2?g^(c|~h):c^g^h:c&h|g&~h:c&g|~c&h)+(0|s[w+(b*(29521>>4*y)+(1296>>4*y)&15)])+(g=l[y]>>b%4*5&31,d[b++]??=0|n*u.abs(u.sin(b)))+x())<<g|c>>>32-g)+x());for(A=4;A;)p[--A]=m[A]=0|p[A]+m[A]}return m},v=e=>{for(var n=e[r],t=[];n;)t[i(--n/4)]|=e[n]<<n%4*8;return t},y=r=>"string"==typeof r?(new TextEncoder).encode(r):r;var md5=(n,t,o)=>{var a,f=v(n=y(n)),u=8*n[r],i=e,l=new Uint8Array(e),d=r=>{for(f.unshift(...Array(e));i;)f[--i]=16843009*r^a[i];i=e};for(null!=t&&((a=v(t=y(t)))[r]>e&&(a=s(a,8*t[r])),d(54),f=s(f,512+u),d(92),u=640),f=s(f,u);i;)l[--i]=f[i>>2]>>>i%4*8;return o?l:l.reduce((r,n)=>r+(n>>4&&"")+n.toString(e),"")}}
|
package/main.js
CHANGED
|
@@ -10,22 +10,25 @@ let $16 = 16
|
|
|
10
10
|
|
|
11
11
|
let $2_32 = 2 ** 32
|
|
12
12
|
|
|
13
|
-
let
|
|
13
|
+
let A = 1732584193
|
|
14
|
+
, D = 271733878
|
|
15
|
+
, C = ~A
|
|
16
|
+
, B = ~D
|
|
14
17
|
|
|
15
18
|
let $Math = Math
|
|
16
19
|
|
|
17
20
|
let floor = $Math.floor
|
|
18
21
|
|
|
19
|
-
/** @type {
|
|
20
|
-
let
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
/** @type {number[]} */
|
|
23
|
+
let S = [
|
|
24
|
+
738695, // 7, 12, 17, 22
|
|
25
|
+
669989, // 5, 9, 14, 20
|
|
26
|
+
770404, // 4, 11, 16, 23
|
|
27
|
+
703814, // 6, 10, 15, 21
|
|
25
28
|
]
|
|
26
29
|
|
|
27
30
|
/** @type {number[]} MD5 constants cached in memory */
|
|
28
|
-
let K =
|
|
31
|
+
let K = Array(64)
|
|
29
32
|
|
|
30
33
|
/**
|
|
31
34
|
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
|
@@ -36,89 +39,58 @@ let K = $Array(64)
|
|
|
36
39
|
*/
|
|
37
40
|
let binlMD5 = (x, bitLen) => {
|
|
38
41
|
var i = 0
|
|
39
|
-
, olda
|
|
40
|
-
, oldb
|
|
41
|
-
, oldc
|
|
42
|
-
, oldd
|
|
43
|
-
, a = 1732584193
|
|
44
|
-
, d = 271733878
|
|
45
|
-
, c = ~a
|
|
46
|
-
, b = ~d
|
|
47
42
|
, j = floor((bitLen + 64) / 512) * $16 + 14
|
|
43
|
+
, l
|
|
44
|
+
, t0
|
|
45
|
+
, t1
|
|
46
|
+
, t2
|
|
48
47
|
|
|
49
48
|
/** @type {number} */
|
|
50
|
-
var
|
|
49
|
+
var oi
|
|
51
50
|
|
|
52
|
-
/** @type {number} */
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var cmn_t
|
|
57
|
-
|
|
58
|
-
/** @type {number[]} */
|
|
59
|
-
var w = $Array($16)
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @param {number} q
|
|
63
|
-
* @param {number} a
|
|
64
|
-
* @param {number} b
|
|
65
|
-
* @param {number} s
|
|
66
|
-
* @returns {number}
|
|
67
|
-
*/
|
|
68
|
-
var cmn = (q, a, b, s) => (
|
|
69
|
-
cmn_t = (
|
|
70
|
-
a + q +
|
|
71
|
-
(
|
|
72
|
-
cmn_t = j++ * (7 & 0o7351 >> ff_i * 3) + (7 & 0o0510 >> ff_i * 3) & 15,
|
|
73
|
-
ff_i ? w[cmn_t] : w[cmn_t] = 0 | x[i++]
|
|
74
|
-
) +
|
|
75
|
-
(K[k_i++] ??= 0 | $2_32 * $Math.abs($Math.sin(k_i)))
|
|
76
|
-
),
|
|
77
|
-
0 | (cmn_t << s | cmn_t >>> 32 - s) + b
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
/** @type {typeof ff[0]} */
|
|
81
|
-
var F_f
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* @param {number} s0
|
|
85
|
-
* @param {number} s1
|
|
86
|
-
* @param {number} s2
|
|
87
|
-
* @param {number} s3
|
|
88
|
-
*/
|
|
89
|
-
var F = (s0, s1, s2, s3) => {
|
|
90
|
-
for (F_f = ff[ff_i], j = 0; j < $16;) {
|
|
91
|
-
a = cmn(F_f(b, c, d), a, b, s0)
|
|
92
|
-
d = cmn(F_f(a, b, c), d, a, s1)
|
|
93
|
-
c = cmn(F_f(d, a, b), c, d, s2)
|
|
94
|
-
b = cmn(F_f(c, d, a), b, c, s3)
|
|
95
|
-
}
|
|
96
|
-
ff_i++
|
|
97
|
-
}
|
|
51
|
+
/** @type {[number, number, number, number]} */
|
|
52
|
+
var output = [A, B, C, D]
|
|
53
|
+
, oldOutput = [...output]
|
|
54
|
+
, o = (/**@type {*}*/ _) => output[++oi & 3]
|
|
98
55
|
|
|
99
56
|
// append padding
|
|
100
57
|
x[floor(bitLen / 32)] |= 0x80 << bitLen % 32;
|
|
101
58
|
x[j] = 0 | bitLen;
|
|
102
59
|
x[j + 1] = 0 | bitLen / $2_32;
|
|
103
60
|
|
|
104
|
-
for (; i < x[$length];
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
61
|
+
for (; i < x[$length]; i += $16) {
|
|
62
|
+
for (oi = j = 0; j < 64; oi -= 6) {
|
|
63
|
+
output[oi & 3] = (
|
|
64
|
+
t0 = (
|
|
65
|
+
(
|
|
66
|
+
t0 = o(),
|
|
67
|
+
t1 = o(),
|
|
68
|
+
t2 = o(),
|
|
69
|
+
(l = j >> 4)
|
|
70
|
+
? l > 1
|
|
71
|
+
? l > 2
|
|
72
|
+
? t1 ^ (t0 | ~t2) // 3
|
|
73
|
+
: t0 ^ t1 ^ t2 // 2
|
|
74
|
+
: t0 & t2 | t1 & ~t2 // 1
|
|
75
|
+
: t0 & t1 | ~t0 & t2 // 0
|
|
76
|
+
) +
|
|
77
|
+
(
|
|
78
|
+
0 | x[i + (j * (0x7351 >> l * 4) + (0x0510 >> l * 4) & 15)]
|
|
79
|
+
) +
|
|
80
|
+
(
|
|
81
|
+
t1 = S[l] >> j % 4 * 5 & 31,
|
|
82
|
+
K[j++] ??= 0 | $2_32 * $Math.abs($Math.sin(j))
|
|
83
|
+
) +
|
|
84
|
+
o()
|
|
85
|
+
),
|
|
86
|
+
0 | (t0 << t1 | t0 >>> 32 - t1) + o()
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
for (oi = 4; oi;) {
|
|
90
|
+
oldOutput[--oi] = output[oi] = 0 | oldOutput[oi] + output[oi]
|
|
91
|
+
}
|
|
120
92
|
}
|
|
121
|
-
return
|
|
93
|
+
return output
|
|
122
94
|
}
|
|
123
95
|
|
|
124
96
|
/**
|
|
@@ -180,9 +152,9 @@ var md5 = (data, key, raw) => {
|
|
|
180
152
|
/** @type {*} */
|
|
181
153
|
var bkey
|
|
182
154
|
, pad = (/**@type {number}*/ x) => {
|
|
183
|
-
bdata.unshift(
|
|
155
|
+
bdata.unshift(...Array($16))
|
|
184
156
|
for (; i;) {
|
|
185
|
-
bdata[--i] = x ^ bkey[i]
|
|
157
|
+
bdata[--i] = 0x01010101 * x ^ bkey[i]
|
|
186
158
|
}
|
|
187
159
|
i = $16
|
|
188
160
|
}
|
|
@@ -193,9 +165,9 @@ var md5 = (data, key, raw) => {
|
|
|
193
165
|
if (bkey[$length] > $16) {
|
|
194
166
|
bkey = binlMD5(bkey, key[$length] * 8)
|
|
195
167
|
}
|
|
196
|
-
pad(
|
|
168
|
+
pad(0x36)
|
|
197
169
|
bdata = binlMD5(bdata, 512 + bitLen)
|
|
198
|
-
pad(
|
|
170
|
+
pad(0x5c)
|
|
199
171
|
bitLen = 512 + 128
|
|
200
172
|
}
|
|
201
173
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinyhmacmd5",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "A tiny JavaScript HMAC-MD5 implementation. The minified browser bundle is only
|
|
3
|
+
"version": "0.0.5",
|
|
4
|
+
"description": "A tiny JavaScript HMAC-MD5 implementation. The minified browser bundle is only 1029 bytes.",
|
|
5
5
|
"author": "bddjr",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|