对称加密——对入参进行DES加密处理

 

体验更优排版请移步原文http://blog.kwin.wang/programming/symmetric-encryption-des-js-java.html

 

对称加密是最快速、最简单的一种加密方式,加密和解密共用一个对称秘钥,因其高效性,被广泛应用在加密协议中。今天恰巧用到,在此总结一下。

我们项目中需要在前端js里对入参进行DES加密传入后台,后台java再进行解密,网上找了一个谷歌的DES加密js包crypto-js点此下载

下载完成之后找到两个js文件引入项目工程中,

1
2
<script type="text/javascript" src="libs/crypto/tripledes.js" ></script>
<script type="text/javascript" src="libs/crypto/mode-ecb.js" ></script>

js中对params(json对象)加密:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function encryptParamsByDES(params, key) {
var keyHex = CryptoJS.enc.Utf8.parse(key),
desParams = {};
if(!params || JSON.stringify(params) == '{}'){
return {};
}else{
$.each(params, function(i, val) {
var desVal = CryptoJS.DES.encrypt(val, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
desParams[i] = desVal.toString();
});
return desParams;
}
}
console.log(encryptParamsByDES({name: 'test', password: '123456'}, 'kwinwang'));

将对称秘钥设置为kwinwang,测试加密输出:

Object {name: “r5vQ2jNkBsc=”, password: “nqp+WDNwUFw=”}

前端加密就完成了,我们再用java尝试解密,

1
2
3
4
5
6
public static void main(String[] args) throws Exception {
String decName = DESUtil.decryption("r5vQ2jNkBsc=", "kwinwang");//解密name
String decPassword = DESUtil.decryption("nqp+WDNwUFw=", "kwinwang");//解密password
System.out.println("明文name:" + decName);
System.out.println("明文password:" + decPassword);
}

执行main方法,控制台输出:

后台解密成功!简直不敢相信,但就是这么简单。

附件下载:DESUtil工具类(Java)

posted @ 2017-09-20 20:17  Kwin的全栈之路  阅读(566)  评论(0编辑  收藏  举报