前段时间根据功能的需要,需在页面对用户提交的表单数据采用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)
- 前言
- spring事务(Transaction )报 marked as rollback-only异常的原因及解决方法
- 自己整理的编码规范总结。(个人觉得很受用)
- spring事务常见问题、异常分析和解决方法
- 剖析OutOfMemoryError: PermGen space产生原因及解决方法
- 剖析java.lang.OutOfMemoryError: Java heap space产生原因及解决方法
- java中不同的ORM框架实现对数据库批量插入数据库的方式与技巧
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- 不得不看的Java代码性能优化总结
- 实现使用3des在页面js加密,后台java解密
- Java日志记录的5条规则