Open xiaohuoni opened 4 years ago
需要这个仓库做什么吗
我的想法是 能不能像描述需求一样,描述代码。
对密码明文先进行 base64 加密,如密码 22 加之后 MjI=
然后对加密后的密文进行 3DES 加密,密码:123456789012345678901234 ,偏移量: 12345678 ,得到最后密文 1DKCnPsI/FQ=
const str = '22';
const psw = do(str).base64().3DES().offetset('12345678')
log(psw) // 1DKCnPsI/FQ=
我觉得可以这样 每个功能单独 提供 再封装一下 可以链式调用?
头一回见先把字符串 base64 编码再用的,如果没有乱码问题而且源数据也不是二进制一般不需要额外编码一次。 主要是编码麻烦,可以给每个加密函数添加一个 from 属性,把类似
CryptoJS.TripleDES.encrypt(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(psw)), CryptoJS.enc.Utf8.parse(edsKey));
这种的改成
CryptoJS.TripleDES.encrypt.from([psw, 'base64', 'utf8'], [edsKey, null, 'utf8']);
// 输入的内容可以是 ArrayBuffer 或者字符串,字符串默认 utf8 ,等价于
CryptoJS.TripleDES.encrypt.from([psw, 'base64'], edsKey);
内部数据全部采用 ArrayBuffer ,字符串不方便编码来编码去的。
配置项改造比较简单,类似这种的:
CryptoJS.TripleDES.encrypt(baseStrUtf, KeyHex, {
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
iv: CryptoJS.enc.Utf8.parse(edsIv)
});
维持一个内部对象,或者用 class 做成这样用:
CryptoJS.TripleDES.encrypt(baseStrUtf, KeyHex).mode('CBC').padding('Pkcs7').iv(edsIv).toString();
不是头一次见XXXX操作,是前后端同步协定的,加密操作步骤,这个步骤在实际应用中,应该是一个随机状态
不是头一次见XXXX操作,是前后端同步协定的,加密操作步骤,这个步骤在实际应用中,应该是一个随机状态
嗯嗯,可以有但不方便做到链式调用里面,
手残
在
crypto-js
官网找不到用例,自己试了试,最后得出以下正确代码。对密码明文先进行 base64 加密,如密码
22
加之后MjI=
然后对加密后的密文进行 3DES 加密,密码:123456789012345678901234
,偏移量:12345678
,得到最后密文1DKCnPsI/FQ=