不会 javascript,只能拿来问了。 简化了下代码,大概如下
function chkSubmit() {
var key = CryptoJS.enc.Hex.parse(setcjhkey(1));
var iv = CryptoJS.enc.Hex.parse(setcjhkey(2));
var mgid = $('input[name=mgid_enc]').val();
var mgpw = $('input[name=mgpwd_enc]').val();
var uidencdata = CryptoJS.AES.encrypt(mgid, key, { iv: iv });
var upwdencdata = CryptoJS.AES.encrypt(mgpw, key, { iv: iv });
$('#login1').val(uidencdata);
$('#login2').val(upwdencdata);
}
用 chrome 来调试的,但变量似乎是各种“对象”,也不知道怎么把具体值给取出来。
问题 1,CryptoJS.enc.Hex.parse(),这个是啥?使用了这个方法后,字符串变成了一个长度 4 的数组,推测对应 python 里的b2a_hex
,也不知道是不是,反正结果看上去也看不太出-_-
问题 2,CryptoJS.AES.encrypt(),这个加密模式,数据块长度,填充方式完全看不出来,就算断点进去,翻了半天好像也没看出来。如果没有明说就代表默认的话,那默认是什么!?
问题 3,在 chrome 里 uidencdata
和 upwdencdata
都显示的是对象,是怎么用.val()变成数值的,我想看到具体数值应该怎么弄。
总之尝试了半天,都得不出和网站加密一样的结果。
1
linde 2019-07-25 04:59:07 +08:00
CryptoJS supports the following modes:
>CBC (the default) >CFB >CTR >OFB >ECB And CryptoJS supports the following padding schemes: >Pkcs7 (the default) >Iso97971 >AnsiX923 >Iso10126 >ZeroPadding >NoPadding ------- 有 mode 和 padding 接下来应该就好办了。 |
2
ysc3839 2019-07-25 05:23:34 +08:00 via Android
1. https://github.com/brix/crypto-js/blob/8e6d15bf2e26d6ff0af5277df2604ca12b60a718/src/core.js#L356-L380
3. 大概是实现了 toString,在调用 val 的时候自动调用了 toString 转成了字符串。 其他的我也不懂。 |
3
AX5N OP |