1. Abstract</h2>
1.1 des好处
- Des加密之后密文比原文长不了多少。
- 加密参数少。没有iv不用同步比较方便。
1.2 des难度
- 单独语言的加解密example还是比较多的,但是两种语言结果能做到一致就比较难了。
- 猜出现乱码很难,有可能是字符集。
1.3 解决办法
直接复制我整理好的
//cryptoJS <script src="./tripledes.js"></script> <script src="./mode-ecb-min.js"></script> <script src="./pad-zeropadding-min.js"></script>
function encryptByDES(message, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); var encrypted = CryptoJS.DES.encrypt(message, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.ZeroPadding }); return encrypted.toString(); } function decryptByDES(ciphertext, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); var decrypted = CryptoJS.DES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(ciphertext) }, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.ZeroPadding }); return decrypted.toString(CryptoJS.enc.Utf8); }var key = '5e8487e6';
var ciphertext = encryptByDES(message, key); // ciphertext: 8dKft9vkZ4I= console.info('ciphertext:', ciphertext); var plaintext = decryptByDES(ciphertext, key); // plaintext : Message console.info('plaintext :', plaintext);</pre>
引用原文:https://gist.github.com/cuixin/10612934
与js一起使用的例子:
des.go 文件没做修改
var message = 't';
3. golang 加解密及其测试</h2>
key := []byte("5e8487e6")//解密,reply是从js中收到的加密字符串 fmt.Println("Received back from client: " + reply) ddd, := base64.StdEncoding.DecodeString(reply)//js加密后的结果是base64的,要转成byte的。 destext, := DesDecrypt(ddd, key) fmt.Println("获取解密结果:", string(destext))//拿到结果
//贴心tip: string->[]byte看这里 []byte("XXX")
//加密,接上面 outs, _ := DesEncrypt(destext, key) dist := make([]byte, 2048) //开辟存储空间 base64.StdEncoding.Encode(dist, outs) fmt.Println("加密送出:", string(dist))</pre>
来自:http://www.philo.top/2015/03/18/golang-js-des/