实现使用3des在页面js加密,后台java解密
最后更新于:2022-04-01 15:55:57
前段时间根据功能的需要,需在页面对用户提交的表单数据采用3des加密,然后提交到后台。之前在网上通过百度、谷歌搜索了很久,虽然找到了很多的资料,但是总有各种问题。要嘛是js加密后,后台不能解密,要嘛是部分数据后台java代码解密失败。
我对网上找的代码进行了修改,解决了这个问题。在js中对需加密数据不满足8位的采用空字符进行填充。在后台解密时,采用无填充模式(desede/CBC/NoPadding)。下面是具体的加密代码。
在页面上导入des.js的js文件。
~~~
<span style="font-family: Arial, Helvetica, sans-serif;">/**</span>
~~~
~~~
*secretKey密钥需与java的3des的secretKey相同
*在我的代码实现中secretKey是在后台生产,放入到redis的,每一次进入页面都会新生产一个。大家也可以把这个值写死在这里
*/
secretKey = "0123456789abcd0123456789";
//varStr需要加密的字符串
//enStr是已加密的字符串
var enStr=DES3.encrypt(secretKey,varStr);
~~~
后台java解密实现:
~~~
//secretKey值需要与js加密的secretKey密钥相同
secretKey = "0123456789abcd0123456789";
//value解密后的值
//enStr需要解密的只字符串
String value=DES3.decode(enStr, secretKey)
~~~
3des的js、java文件在下面zip中:
[http://download.csdn.net/detail/mr_smile2014/9325545](http://download.csdn.net/detail/mr_smile2014/9325545)