| 1234567891011121314151617181920212223242526272829303132333435 |
- var crypto = require("crypto");
- function WXBizDataCrypt(appId, sessionKey) {
- this.appId = appId;
- this.sessionKey = sessionKey;
- }
- WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
- // base64 decode
- var sessionKey = new Buffer(this.sessionKey, "base64");
- encryptedData = new Buffer(encryptedData, "base64");
- iv = new Buffer(iv, "base64");
- try {
- // 解密
- var decipher = crypto.createDecipheriv("aes-128-cbc", sessionKey, iv);
- // 设置自动 padding 为 true,删除填充补位
- decipher.setAutoPadding(true);
- // var decoded = decipher.update(encryptedData, 'binary', 'utf8')
- var decoded = decipher.update(encryptedData, "", "utf8");
- decoded += decipher.final("utf8");
- decoded = JSON.parse(decoded);
- } catch (err) {
- throw new Error("Illegal Buffer");
- }
- if (decoded.watermark.appid !== this.appId) {
- throw new Error("Illegal Buffer");
- }
- return decoded;
- };
- module.exports = WXBizDataCrypt;
|