我试图找出javascipt中的哪种哈希加密:
function L(j) {
var h = a.pbkey,
g = a.rndnb;
if (typeof f != "undefined") {
var e = f.PBK(h),
d = f.STBUNC(j),
i = f.STBA(g),
c = f.ENC(d, e, i),
b = f.BAT64(c);
return b
} else return ""
}
它哈希一个phonenumber.Ex:+79645531974
pbkey:'e=010001;m=d06889ab9ea3c9ce9d2e92559d6b2f043ef873f0cc9f858745bc6784d1d9a98f8d354e061d25fad9c3a741c57626d0d65de01eb03584a5af1f579b9f9834a60b628756ad636ec1d3129e87e0c7274670d9ca615f12fe3424e9da362f7f8cce8dfe61d79f5ec68dffe1f3ddcf5e20e1bf07349ee6c747a59b09d6420d131899f93dfaeacd76d6a684cda8ac99e7f87e17507235a2b59b84f56d8a3d4ecdd8259b3c7d892758d69a48930b591e66cc6d88d20a3de9360be30c8a94084a2753c92e0cfd1c94868c90109cd176855bba96cd3e73f34442ddfd256da7f1d1e48fbf265ad2f2caeebe4990ca5638b90b6c3fafa8c015a09947e3f03defc51e231a2f2d'
rndnb:'7fc1cdfea47d0057bbb33176ce73a376f9319d4e221d84807d74ff2f859b510b9fd132e577ed207d96b1d11e57500bff93efe97842248bcbe39527592797b7e3a821110ae61c3da67c2773bcb634c53357fb230ef95297d20c37d256aa8bd75bea315f2d
结果:4LW/+zyiBBgDExOLPLafO9T/GG3guycSMK3uz16qFcXWgvo1KAF8VrbGrxAE91Mvk6qUDkX8c9ha7urDB41XDAhciBbj2VzE48WXjB/A6gI6n7qcTwkNTPT0Qly1EFRtTF44xTbPEld/OviYhD2OolumbtL42wtnyw1oh4/2v2SyAqARdGJizRhd1UFpWW+OUIcF3eyhKS1R+TDorsOoM/bJQzR6CTSyLysfPJL8ldjG0Ujevac7dT+WvaXFmP3qlsReMP/FSLjs7xixCAA/VrxIRUragoIOf2cptilop5zJNY26DO/iEhUUU7n8ANayrqthplS3v624XR24iM22bg==
答案 0 :(得分:1)
代码建议它使用2048位RSA加密(使用公共指数65537)和随机填充方案。
但只有这段代码才能解决整个问题。我们需要知道/^0(9|4)\d{8}$/
,^ - means start of line
0 - leading zero is mandatory
(9|4) - this is saying that the zero has to be followed by either a 9 or a 4
\d{8} - next, there have to be 8 digits
$ - means end of line
,PBK()
,STBUNC()
,STBA()
函数的作用,否则我们无法明确地说任何关于这里做了什么。
但是,输入参数提供了一些建议。 pbkey 参数表明加密是基于“公钥”的,并使用指数 e = 65537 (常用的RSA公共指数)。然后很容易猜到 m 代表“模数”。我们可以处理RSA或一些对数组密码(例如ElGamal)。为了获得更多信息,我们可以检查这个模数ENC()
是否是素数,事实证明它不是。所以logarithm-group crypto不在桌面上,所以我们可能处理RSA。注意模数和输出每个都是2048位,因此检查出来。
但我们还没有完成。我们还有 rndnb 值,这可能意味着“随机数”。这表明加密不是教科书RSA(感谢上帝),而是使用某种随机化。可能它使用某种标准填充方案,如OAEP。
要获得更多细节,我们真的需要获取正在使用的函数的主体。