小游戏DES3加密解密实现,基于crypto"/>
微信小程序、小游戏DES3加密解密实现,基于crypto
首先我们需要下载crypto-js的源代码,下载链接:
这里源代码用的是 github 上面的项目:
7000+ star 哟
如果觉得麻烦,可以下载笔者做的DEMO,拿来主义你懂滴?
小游戏:
小程序:
然后我们需要引入 crypto-js库的入口文件 crypto-js.js
接下来就是加密解密的代码了。
加密:
为了方便复制粘贴,我这里再加上文本格式的:
var key = "aaaaaaaa";var data = '这是一个要被加密的字符串'console.log("原始字符串:" + data);var keyHex = CryptoJS.enc.Utf8.parse(key);
var encrypted = CryptoJS.DES.encrypt(data, keyHex, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7
});var encryptData = encrypted.toString();console.log("加密之后的结果:" + encryptData);var encodedData = encodeURIComponent(encryptData);console.log("加密并且URL编码之后的结果:" + encodedData);
最后的url编码,如果你要用http请求来发送就需要编,否则传输过程中,有的特殊符号会出现问题,笔者这里出现过 + 变为 空格的情况,这样服务器就无法解密了。也有可能有的请求库内部封装了url编码,这个也可以省略
接下来是解密的代码:
同样为了方便复制粘贴,我这里附上文本格式的代码:
var key = "aaaaaaaa";var decodedData = decodeURIComponent(encodedData);console.log("URL解码之后的结果:" + decodedData);var keyHex = CryptoJS.enc.Utf8.parse(key);
var decrypted = CryptoJS.DES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(decodedData)
}, keyHex, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});var decryptedData = decrypted.toString(CryptoJS.enc.Utf8);
console.log("解密之后的结果:" + decryptedData);
同理,解密一开始的 url 解码有时候可能不需要,一般 http 请求回来的结果默认是 url 解码过的,大家可以根据自己的情况来使用。
附上demo打印的日志,微信开发者工具里面的日志截图:
可以看到,加密之后再解密,得到了同样的字符串!
更多推荐
微信小程序、小游戏DES3加密解密实现,基于crypto
发布评论