ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
前段时间根据功能的需要,需在页面对用户提交的表单数据采用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)