1
This commit is contained in:
34
tool/WXBizDataCrypt.js
Normal file
34
tool/WXBizDataCrypt.js
Normal file
@@ -0,0 +1,34 @@
|
||||
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");
|
||||
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;
|
||||
Reference in New Issue
Block a user