微信小程序、小游戏DES3加密解密实现,基于crypto-js

首先我们需要下载crypto-js的源代码,下载链接:

这里源代码用的是 github 上面的项目:https://github.com/brix/crypto-js

7000+ star 哟

如果觉得麻烦,可以下载笔者做的DEMO,拿来主义你懂滴?

小游戏:https://download.csdn.net/download/zbfaaadjl/11501950

小程序:https://download.csdn.net/download/zbfaaadjl/11501967

然后我们需要引入 crypto-js库的入口文件 crypto-js.js

接下来就是加密解密的代码了。

加密:

微信小程序、小游戏DES3加密解密实现,基于crypto-js_第1张图片

为了方便复制粘贴,我这里再加上文本格式的:

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编码,这个也可以省略

接下来是解密的代码:

微信小程序、小游戏DES3加密解密实现,基于crypto-js_第2张图片

同样为了方便复制粘贴,我这里附上文本格式的代码:

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-js_第3张图片

可以看到,加密之后再解密,得到了同样的字符串!

你可能感兴趣的:(微信小程序,微信小游戏)