刚来CSDN没啥分,事情比较急,没办法了
我很懒,懒得翻译
JS如下,是一段加密函数,请翻译成Delphi代码,谢谢。
我不想通过ScriptControl调用JS来完成这些功能。纯算法,简单的。function HA(a, b, c, d, e, f, g)
{
return H8(b ^ c ^ d, a, b, e, f, g)
}function HB(a, b, c, d, e, f, g)
{
return H8(c ^ (b | (~d)), a, b, e, f, g)
}function HC(x, y)
{
var l = (x & 0xFFFF) + (y & 0xFFFF);
var m = (x >> 16) + (y >> 16) + (l >> 16);
return (m << 16) | (l & 0xFFFF)
}function HD(n, c)
{
return (n << c) | (n >>> (32-c))
}function HE()
{
var r = '';
for (var i = 0; i < 26; i++)
{
r += HF(65+i)
}
return r
}function HF(i)
{
return String.fromCharCode(i)
}function H(s)
{
var p = 1;
if (s.indexOf('-') == 0)
{
s = s.substring(1);
p = - 1
}
var r = 0;
var c = hN + hA + hA.toLowerCase();
var l = s.length;
for (var i = 0; i < l; i++)
{
r += c.indexOf(s.substr(l - i - 1, 1)) * Math.pow(62, i)
}
return r * p
}function H0(a, b, c, d, x, s, t)
{
return H8((b & d) | (c & (~d)), a, b, x, s, t)
}function HH(s)
{
var o = H3(H2(H4(s)));
return o
}function H2(s)
{
var o = H6(H7(H5(s), s.length * 8), oD);
return o
}function H3(s)
{
try
{
hC
}
catch (e)
{
hC = 0
}
var h = hC ? hN + 'ABCDEF': hN + 'abcdef';
var o = '';
var x;
for (var i = 0; i < s.length; i++)
{
x = s.charCodeAt(i);
o += h.charAt((x >>> 4) & 0x0F) + h.charAt(x & 0x0F)
}
return o
}function H4(s)
{
var o = '';
var i = 8;
var x, y;
while (++i < 29)
{
x = s.charCodeAt(i);
y = i + 1 < 29 ? s.charCodeAt(i + 1): 0;
if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
{
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++
}
if (x <= 0x7F)
o += HF(x);
else if (x <= 0x7FF)
o += HF(0xC0 | ((x >>> 6) & 0x1F), 0x80 | (x & 0x3F));
else if (x <= 0xFFFF)
o += HF(0xE0 | ((x >>> 12) & 0x0F), 0x80 | ((x >>> 6) & 0x3F),
0x80 | (x & 0x3F));
else if (x <= 0x1FFFFF)
o += HF(0xF0 | ((x >>> 18) & 0x07), 0x80 | ((x >>> 12) & 0x3F), 0x80
| ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F))
}
return o
}function H5(s)
{
var o = Array(s.length >> 2);
for (var i = 0; i < o.length; i++)
o[i] = 0;
for (var i = 0; i < s.length * 8; i += 8)
o[i >> 5] |= (s.charCodeAt(i / 8) & 0xFF) << (i % 32);
return o
}var hA = HE();
function H6(s, d)
{
var o = '';
for (var i = 0; i < s.length * 32; i += 8)
o += HF((s[i >> 5] >>> (i % 32)) & 0xFF);
return o
}function H7(e, l)
{
e[l >> 5] |= 0x80 << ((l) % 32);
e[(((l + 64) >>> 9) << 4) + 14] = l;
var a = H('1tFkIL');
var b = H('-IOAOV');
var c = H('-1tFkIM');
var d = H('IOAOU');
for (var i = 0; i < e.length; i += 16)
{
var oa = a;
var ob = b;
var oc = c;
var od = d;
a = H9(a, b, c, d, e[i + 0], 7, H('-k4tC4'));
d = H9(d, a, b, c, e[i + 1], 12, H('-QMZXm'));
c = H9(c, d, a, b, e[i + 2], 17, H('f19oJ'));
b = H9(b, c, d, a, e[i + 3], 22, H('-18gikk'));
a = H9(a, b, c, d, e[i + 4], 7, H('-BwEc5'));
d = H9(d, a, b, c, e[i + 5], 12, H('1JDPju'));
c = H9(c, d, a, b, e[i + 6], 17, H('-1bhWlp'));
b = H9(b, c, d, a, e[i + 7], 22, H('-35mDH'));
a = H9(a, b, c, d, e[i + 8], 7, H('1vmt4K'));
d = H9(d, a, b, c, e[i + 9], 12, H('-28XJ3J'));
c = H9(c, d, a, b, e[i + 10], 17, H('-AwR'));
b = H9(b, c, d, a, e[i + 11], 22, H('-2AhX2w'));
a = H9(a, b, c, d, e[i + 12], 7, H('1y7vr0'));
d = H9(d, a, b, c, e[i + 13], 12, H('-2jGYv'));
c = H9(c, d, a, b, e[i + 14], 17, H('-1deFPO'));
b = H9(b, c, d, a, e[i + 15], 22, H('1LgNKD'));
a = H0(a, b, c, d, e[i + 1], 5, H('-BDfFG'));
d = H0(d, a, b, c, e[i + 6], 9, H('-1ANWEK'));
c = H0(c, d, a, b, e[i + 11], 14, H('hYyNl'));
b = H0(b, c, d, a, e[i + 0], 20, H('-PIple'));
a = H0(a, b, c, d, e[i + 5], 5, H('-lTfSl'));
d = H0(d, a, b, c, e[i + 10], 9, H('2ZVid'));
c = H0(c, d, a, b, e[i + 15], 14, H('-ihIaN'));
b = H0(b, c, d, a, e[i + 4], 20, H('-RRav2'));
a = H0(a, b, c, d, e[i + 9], 5, H('cT8sw'));
d = H0(d, a, b, c, e[i + 14], 9, H('-170zWc'));
c = H0(c, d, a, b, e[i + 3], 14, H('-Cg9vN'));
b = H0(b, c, d, a, e[i + 8], 20, H('1Gk3h7'));
a = H0(a, b, c, d, e[i + 13], 5, H('-1Zljdz'));
d = H0(d, a, b, c, e[i + 2], 9, H('-3TgTI'));
c = H0(c, d, a, b, e[i + 7], 14, H('1tRGCv'));
b = H0(b, c, d, a, e[i + 12], 20, H('-26NqgI'));
a = HA(a, b, c, d, e[i + 5], 4, H('-1aTm'));
d = HA(d, a, b, c, e[i + 8], 11, H('-2CsW0l'));
c = HA(c, d, a, b, e[i + 11], 16, H('20SNrG'));
b = HA(b, c, d, a, e[i + 14], 23, H('-2O9cy'));
a = HA(a, b, c, d, e[i + 1], 4, H('-1fbsyK'));
d = HA(d, a, b, c, e[i + 4], 11, H('1O8vhx'));
c = HA(c, d, a, b, e[i + 7], 16, H('-AWS2K'));
b = HA(b, c, d, a, e[i + 10], 23, H('-1C5NRo'));
a = HA(a, b, c, d, e[i + 13], 4, H('k6Zpm'));
d = HA(d, a, b, c, e[i + 0], 11, H('-OGNuQ'));
c = HA(c, d, a, b, e[i + 3], 16, H('-mtcyJ'));
b = HA(b, c, d, a, e[i + 6], 23, H('590fF'));
a = HA(a, b, c, d, e[i + 9], 4, H('-hKu3T'));
d = HA(d, a, b, c, e[i + 12], 11, H('-SXtZD'));
c = HA(c, d, a, b, e[i + 15], 16, H('ZuwNE'));
b = HA(b, c, d, a, e[i + 2], 23, H('-15ML3D'));
a = HB(a, b, c, d, e[i + 0], 6, H('-DRQxI'));
d = HB(d, a, b, c, e[i + 7], 10, H('1EGJvz'));
c = HB(c, d, a, b, e[i + 14], 15, H('-1Xqsbx'));
b = HB(b, c, d, a, e[i + 5], 21, H('-3szDj'));
a = HB(a, b, c, d, e[i + 12], 6, H('1r53yd'));
d = HB(d, a, b, c, e[i + 3], 10, H('-24FAa6'));
c = HB(c, d, a, b, e[i + 10], 15, H('-4PY3'));
b = HB(b, c, d, a, e[i + 1], 21, H('-2F4FI7'));
a = HB(a, b, c, d, e[i + 8], 6, H('22mENb'));
d = HB(d, a, b, c, e[i + 15], 10, H('-24RVo'));
c = HB(c, d, a, b, e[i + 6], 15, H('-1haQs0'));
b = HB(b, c, d, a, e[i + 13], 21, H('1Qb49B'));
a = HB(a, b, c, d, e[i + 4], 6, H('-9qbCI'));
d = HB(d, a, b, c, e[i + 11], 10, H('-1DoHtL'));
c = HB(c, d, a, b, e[i + 2], 15, H('mdxOt'));
b = HB(b, c, d, a, e[i + 9], 21, H('-NFEHX'));
a = HC(a, oa);
b = HC(b, ob);
c = HC(c, oc);
d = HC(d, od)
}
return Array(a, b, c, d)
}function H8(q, a, b, e, f, g)
{
return HC(HD(HC(HC(a, q), HC(e, g)), f), b)
}function H9(a, b, c, d, e, f, g)
{
return H8((b & c) | ((~b) & d), a, b, e, f, g)
}
我很懒,懒得翻译
JS如下,是一段加密函数,请翻译成Delphi代码,谢谢。
我不想通过ScriptControl调用JS来完成这些功能。纯算法,简单的。function HA(a, b, c, d, e, f, g)
{
return H8(b ^ c ^ d, a, b, e, f, g)
}function HB(a, b, c, d, e, f, g)
{
return H8(c ^ (b | (~d)), a, b, e, f, g)
}function HC(x, y)
{
var l = (x & 0xFFFF) + (y & 0xFFFF);
var m = (x >> 16) + (y >> 16) + (l >> 16);
return (m << 16) | (l & 0xFFFF)
}function HD(n, c)
{
return (n << c) | (n >>> (32-c))
}function HE()
{
var r = '';
for (var i = 0; i < 26; i++)
{
r += HF(65+i)
}
return r
}function HF(i)
{
return String.fromCharCode(i)
}function H(s)
{
var p = 1;
if (s.indexOf('-') == 0)
{
s = s.substring(1);
p = - 1
}
var r = 0;
var c = hN + hA + hA.toLowerCase();
var l = s.length;
for (var i = 0; i < l; i++)
{
r += c.indexOf(s.substr(l - i - 1, 1)) * Math.pow(62, i)
}
return r * p
}function H0(a, b, c, d, x, s, t)
{
return H8((b & d) | (c & (~d)), a, b, x, s, t)
}function HH(s)
{
var o = H3(H2(H4(s)));
return o
}function H2(s)
{
var o = H6(H7(H5(s), s.length * 8), oD);
return o
}function H3(s)
{
try
{
hC
}
catch (e)
{
hC = 0
}
var h = hC ? hN + 'ABCDEF': hN + 'abcdef';
var o = '';
var x;
for (var i = 0; i < s.length; i++)
{
x = s.charCodeAt(i);
o += h.charAt((x >>> 4) & 0x0F) + h.charAt(x & 0x0F)
}
return o
}function H4(s)
{
var o = '';
var i = 8;
var x, y;
while (++i < 29)
{
x = s.charCodeAt(i);
y = i + 1 < 29 ? s.charCodeAt(i + 1): 0;
if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
{
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++
}
if (x <= 0x7F)
o += HF(x);
else if (x <= 0x7FF)
o += HF(0xC0 | ((x >>> 6) & 0x1F), 0x80 | (x & 0x3F));
else if (x <= 0xFFFF)
o += HF(0xE0 | ((x >>> 12) & 0x0F), 0x80 | ((x >>> 6) & 0x3F),
0x80 | (x & 0x3F));
else if (x <= 0x1FFFFF)
o += HF(0xF0 | ((x >>> 18) & 0x07), 0x80 | ((x >>> 12) & 0x3F), 0x80
| ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F))
}
return o
}function H5(s)
{
var o = Array(s.length >> 2);
for (var i = 0; i < o.length; i++)
o[i] = 0;
for (var i = 0; i < s.length * 8; i += 8)
o[i >> 5] |= (s.charCodeAt(i / 8) & 0xFF) << (i % 32);
return o
}var hA = HE();
function H6(s, d)
{
var o = '';
for (var i = 0; i < s.length * 32; i += 8)
o += HF((s[i >> 5] >>> (i % 32)) & 0xFF);
return o
}function H7(e, l)
{
e[l >> 5] |= 0x80 << ((l) % 32);
e[(((l + 64) >>> 9) << 4) + 14] = l;
var a = H('1tFkIL');
var b = H('-IOAOV');
var c = H('-1tFkIM');
var d = H('IOAOU');
for (var i = 0; i < e.length; i += 16)
{
var oa = a;
var ob = b;
var oc = c;
var od = d;
a = H9(a, b, c, d, e[i + 0], 7, H('-k4tC4'));
d = H9(d, a, b, c, e[i + 1], 12, H('-QMZXm'));
c = H9(c, d, a, b, e[i + 2], 17, H('f19oJ'));
b = H9(b, c, d, a, e[i + 3], 22, H('-18gikk'));
a = H9(a, b, c, d, e[i + 4], 7, H('-BwEc5'));
d = H9(d, a, b, c, e[i + 5], 12, H('1JDPju'));
c = H9(c, d, a, b, e[i + 6], 17, H('-1bhWlp'));
b = H9(b, c, d, a, e[i + 7], 22, H('-35mDH'));
a = H9(a, b, c, d, e[i + 8], 7, H('1vmt4K'));
d = H9(d, a, b, c, e[i + 9], 12, H('-28XJ3J'));
c = H9(c, d, a, b, e[i + 10], 17, H('-AwR'));
b = H9(b, c, d, a, e[i + 11], 22, H('-2AhX2w'));
a = H9(a, b, c, d, e[i + 12], 7, H('1y7vr0'));
d = H9(d, a, b, c, e[i + 13], 12, H('-2jGYv'));
c = H9(c, d, a, b, e[i + 14], 17, H('-1deFPO'));
b = H9(b, c, d, a, e[i + 15], 22, H('1LgNKD'));
a = H0(a, b, c, d, e[i + 1], 5, H('-BDfFG'));
d = H0(d, a, b, c, e[i + 6], 9, H('-1ANWEK'));
c = H0(c, d, a, b, e[i + 11], 14, H('hYyNl'));
b = H0(b, c, d, a, e[i + 0], 20, H('-PIple'));
a = H0(a, b, c, d, e[i + 5], 5, H('-lTfSl'));
d = H0(d, a, b, c, e[i + 10], 9, H('2ZVid'));
c = H0(c, d, a, b, e[i + 15], 14, H('-ihIaN'));
b = H0(b, c, d, a, e[i + 4], 20, H('-RRav2'));
a = H0(a, b, c, d, e[i + 9], 5, H('cT8sw'));
d = H0(d, a, b, c, e[i + 14], 9, H('-170zWc'));
c = H0(c, d, a, b, e[i + 3], 14, H('-Cg9vN'));
b = H0(b, c, d, a, e[i + 8], 20, H('1Gk3h7'));
a = H0(a, b, c, d, e[i + 13], 5, H('-1Zljdz'));
d = H0(d, a, b, c, e[i + 2], 9, H('-3TgTI'));
c = H0(c, d, a, b, e[i + 7], 14, H('1tRGCv'));
b = H0(b, c, d, a, e[i + 12], 20, H('-26NqgI'));
a = HA(a, b, c, d, e[i + 5], 4, H('-1aTm'));
d = HA(d, a, b, c, e[i + 8], 11, H('-2CsW0l'));
c = HA(c, d, a, b, e[i + 11], 16, H('20SNrG'));
b = HA(b, c, d, a, e[i + 14], 23, H('-2O9cy'));
a = HA(a, b, c, d, e[i + 1], 4, H('-1fbsyK'));
d = HA(d, a, b, c, e[i + 4], 11, H('1O8vhx'));
c = HA(c, d, a, b, e[i + 7], 16, H('-AWS2K'));
b = HA(b, c, d, a, e[i + 10], 23, H('-1C5NRo'));
a = HA(a, b, c, d, e[i + 13], 4, H('k6Zpm'));
d = HA(d, a, b, c, e[i + 0], 11, H('-OGNuQ'));
c = HA(c, d, a, b, e[i + 3], 16, H('-mtcyJ'));
b = HA(b, c, d, a, e[i + 6], 23, H('590fF'));
a = HA(a, b, c, d, e[i + 9], 4, H('-hKu3T'));
d = HA(d, a, b, c, e[i + 12], 11, H('-SXtZD'));
c = HA(c, d, a, b, e[i + 15], 16, H('ZuwNE'));
b = HA(b, c, d, a, e[i + 2], 23, H('-15ML3D'));
a = HB(a, b, c, d, e[i + 0], 6, H('-DRQxI'));
d = HB(d, a, b, c, e[i + 7], 10, H('1EGJvz'));
c = HB(c, d, a, b, e[i + 14], 15, H('-1Xqsbx'));
b = HB(b, c, d, a, e[i + 5], 21, H('-3szDj'));
a = HB(a, b, c, d, e[i + 12], 6, H('1r53yd'));
d = HB(d, a, b, c, e[i + 3], 10, H('-24FAa6'));
c = HB(c, d, a, b, e[i + 10], 15, H('-4PY3'));
b = HB(b, c, d, a, e[i + 1], 21, H('-2F4FI7'));
a = HB(a, b, c, d, e[i + 8], 6, H('22mENb'));
d = HB(d, a, b, c, e[i + 15], 10, H('-24RVo'));
c = HB(c, d, a, b, e[i + 6], 15, H('-1haQs0'));
b = HB(b, c, d, a, e[i + 13], 21, H('1Qb49B'));
a = HB(a, b, c, d, e[i + 4], 6, H('-9qbCI'));
d = HB(d, a, b, c, e[i + 11], 10, H('-1DoHtL'));
c = HB(c, d, a, b, e[i + 2], 15, H('mdxOt'));
b = HB(b, c, d, a, e[i + 9], 21, H('-NFEHX'));
a = HC(a, oa);
b = HC(b, ob);
c = HC(c, oc);
d = HC(d, od)
}
return Array(a, b, c, d)
}function H8(q, a, b, e, f, g)
{
return HC(HD(HC(HC(a, q), HC(e, g)), f), b)
}function H9(a, b, c, d, e, f, g)
{
return H8((b & c) | ((~b) & d), a, b, e, f, g)
}
我在学校里的fpc上用,结果不给用
回家来才发现学校fpc版本太低,bj了