Skip to content

Instantly share code, notes, and snippets.

@smhmic
Created March 18, 2025 01:59
Show Gist options
  • Save smhmic/8460b96ec198f7b8091ac884fca7787c to your computer and use it in GitHub Desktop.
Save smhmic/8460b96ec198f7b8091ac884fca7787c to your computer and use it in GitHub Desktop.
SHA-256 hash (from fbevents.js)
var sha256hash = (function() {
"use strict";
function a(a) {
var b = "", c = void 0, d;
for (var e = 0; e < a.length; e++)
c = a.charCodeAt(e),
d = e + 1 < a.length ? a.charCodeAt(e + 1) : 0,
c >= 55296 && c <= 56319 && d >= 56320 && d <= 57343 && (c = 65536 + ((c & 1023) << 10) + (d & 1023),
e++),
c <= 127 ? b += String.fromCharCode(c) : c <= 2047 ? b += String.fromCharCode(192 | c >>> 6 & 31, 128 | c & 63) : c <= 65535 ? b += String.fromCharCode(224 | c >>> 12 & 15, 128 | c >>> 6 & 63, 128 | c & 63) : c <= 2097151 && (b += String.fromCharCode(240 | c >>> 18 & 7, 128 | c >>> 12 & 63, 128 | c >>> 6 & 63, 128 | c & 63));
return b
}
function b(a, b) {
return b >>> a | b << 32 - a
}
function c(a, b, c) {
return a & b ^ ~a & c
}
function d(a, b, c) {
return a & b ^ a & c ^ b & c
}
function e(a) {
return b(2, a) ^ b(13, a) ^ b(22, a)
}
function f(a) {
return b(6, a) ^ b(11, a) ^ b(25, a)
}
function g(a) {
return b(7, a) ^ b(18, a) ^ a >>> 3
}
function h(a) {
return b(17, a) ^ b(19, a) ^ a >>> 10
}
function i(a, b) {
return a[b & 15] += h(a[b + 14 & 15]) + a[b + 9 & 15] + g(a[b + 1 & 15])
}
var k = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]
, l = new Array(8)
, m = new Array(2)
, n = new Array(64)
, o = new Array(16)
, p = "0123456789abcdef";
function q(a, b) {
var c = (a & 65535) + (b & 65535);
a = (a >> 16) + (b >> 16) + (c >> 16);
return a << 16 | c & 65535
}
function r() {
m[0] = m[1] = 0,
l[0] = 1779033703,
l[1] = 3144134277,
l[2] = 1013904242,
l[3] = 2773480762,
l[4] = 1359893119,
l[5] = 2600822924,
l[6] = 528734635,
l[7] = 1541459225
}
function s() {
var a = void 0
, b = void 0
, g = void 0
, h = void 0
, j = void 0
, m = void 0
, p = void 0
, r = void 0
, s = void 0
, t = void 0;
g = l[0];
h = l[1];
j = l[2];
m = l[3];
p = l[4];
r = l[5];
s = l[6];
t = l[7];
for (var u = 0; u < 16; u++)
o[u] = n[(u << 2) + 3] | n[(u << 2) + 2] << 8 | n[(u << 2) + 1] << 16 | n[u << 2] << 24;
for (u = 0; u < 64; u++)
a = t + f(p) + c(p, r, s) + k[u],
u < 16 ? a += o[u] : a += i(o, u),
b = e(g) + d(g, h, j),
t = s,
s = r,
r = p,
p = q(m, a),
m = j,
j = h,
h = g,
g = q(a, b);
l[0] += g;
l[1] += h;
l[2] += j;
l[3] += m;
l[4] += p;
l[5] += r;
l[6] += s;
l[7] += t
}
function t(a, b) {
var c = void 0, d, e = 0;
d = m[0] >> 3 & 63;
var f = b & 63;
(m[0] += b << 3) < b << 3 && m[1]++;
m[1] += b >> 29;
for (c = 0; c + 63 < b; c += 64) {
for (var g = d; g < 64; g++)
n[g] = a.charCodeAt(e++);
s();
d = 0
}
for (g = 0; g < f; g++)
n[g] = a.charCodeAt(e++)
}
function u() {
var a = m[0] >> 3 & 63;
n[a++] = 128;
if (a <= 56)
for (var b = a; b < 56; b++)
n[b] = 0;
else {
for (b = a; b < 64; b++)
n[b] = 0;
s();
for (a = 0; a < 56; a++)
n[a] = 0
}
n[56] = m[1] >>> 24 & 255;
n[57] = m[1] >>> 16 & 255;
n[58] = m[1] >>> 8 & 255;
n[59] = m[1] & 255;
n[60] = m[0] >>> 24 & 255;
n[61] = m[0] >>> 16 & 255;
n[62] = m[0] >>> 8 & 255;
n[63] = m[0] & 255;
s()
}
function v() {
var a = "";
for (var b = 0; b < 8; b++)
for (var c = 28; c >= 0; c -= 4)
a += p.charAt(l[b] >>> c & 15);
return a
}
function w(a) {
var b = 0;
for (var c = 0; c < 8; c++)
for (var d = 28; d >= 0; d -= 4)
a[b++] = p.charCodeAt(l[c] >>> d & 15)
}
function x(a, b) {
r();
t(a, a.length);
u();
if (b)
w(b);
else
return v()
}
function y(b) {
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0
, d = arguments[2];
if (b === null || b === void 0)
return null;
var e = b;
c && (e = a(b));
return x(e, d)
}
return y
}
)();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment