JS:DES-CBC加密(解密待补充)

0、刚入坑前端,记录自己的爬坑史 

1、首先是保证自己项目同根目录下的package.json中已经依赖了crypto-js

JS:DES-CBC加密(解密待补充)_第1张图片

 2、DES-CBC加密模式有三个参数需要设置:加密内容、秘钥、向量(请忽略以下直观上的不合理命名),这里以Utf8编码为例

(1)向量是根据自己的需求而设置,网上大佬们各有各的方式,比如有些用秘钥key直接作为向量编码然后作为参数值iv:CryptoJS.enc.Utf8.parse(key);(有无设置向量,加密值差别很大)

JS:DES-CBC加密(解密待补充)_第2张图片

以下只是个人的反向思路操作,阅读网站开发者的劳动成果,这里表示感谢

(2)因为自己刚开始也是从网上查阅资料跟着写,然后怎么设置加密出来的值都与以下网站加密的不一致(以下网站加密的值跟正在合作的伙伴提供的测试加密数据一致,不好意思问对方加密问题,因为他们提供的是java加密方式。题外话,其实大部分编程语言实现某个功能都有类似的点/思路,所以如果自身学习多门语言,可以反向猜测/推理问题点)。尝试了很久,实在不知道问题所在。

http://www.txttool.com/t/?id=NDI2

 JS:DES-CBC加密(解密待补充)_第3张图片

(3)就很突然,莫名地想知道站点老哥是怎么实现的。于是按了下F12,就开始阅读源码。找到“加密”button,很直观可以看到onclick事件方法调用函数encrypt()。

JS:DES-CBC加密(解密待补充)_第4张图片

(4)问题又来了,函数encrypt()写在哪呢,这么多源码,还要一个个展开js查看。不如直接来下万能的ctrl+f,嘿嘿,果然查到了5处地方调用这个函数。(这里只是侥幸,站点老哥没有用高级语法。比如通过id之类的,然后又是外部js,js再来下源码混淆,那就炸天了)。

JS:DES-CBC加密(解密待补充)_第5张图片

(5)除了调用函数,老哥肯定写在这里面了。

JS:DES-CBC加密(解密待补充)_第6张图片

 (6)又是个坎,网站外部的js不像我们项目中可以直接通过点击ctrl+鼠标左键快速跳转源码。

鼠标放在上面有个http地址,我的第一直觉告诉我,别人都对自己的代码混淆/加密了。于是右键点击Copy link address复制到了js的地址http://www.txttool.com/api/des/encrypt_des.js,再在新窗口中直接打开,太棒了,没有混淆/加密。于是复制了所有源码,在线js格式化 ,然后对比自己的错误点在哪。

(7)如果加密值想要再URLEncode.encode的话(这里是java的实现方式),h5是用到了

encodeURIComponent(xxx)转码。(escape、encodeURI、encodeURIComponent这三个方法可以深入了解)

(8)对于一个热爱编程的码农,自己还是一个需要不断学习成长的小白。

你可能感兴趣的:(H5,javascript,node.js,html5)