标签:ciphertext DES ctbpsp 解密 mode var CryptoJS latin1Str
分析
对响应的数据分析
全局搜索,调试
- 使用 decrypt 关键字进行全局搜索定位,断点调试如下
- 函数解密响应内容
有图可以看出:
- DES 加密解密
- e 是 Hexkey,由字符串处理后所得
- mode是ECB
- padding是PKCS7
- ciphertext是原字符串
- 再看 e, e = w.a.enc.Utf8.parse() 可以看到实现方式如图
-
然后是一个w.a.enc.Base64.parse,等同于解码: base64.b64decode(string)
-
因为网站使用的Cryptojs,接下来我们也用nodejs实现一下这段代码。
// npm install crypto-js
var CryptoJS = require("crypto-js");
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
function parse1(latin1Str) {
// Shortcut
var latin1StrLength = latin1Str.length;
// Convert
var words = [];
for (var i = 0; i < latin1StrLength; i++) {
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
}
return new WordArray.init(words, latin1StrLength);
}
var t = '要解密的字符串'
var keyHex = parse1(unescape(encodeURIComponent("ctpstp@custominfo!@#qweASD")))
var ciphertext = CryptoJS.enc.Base64.parse(t)
const decryptDES = (ciphertext) => {
if (ciphertext) {
let decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
} else {
return '';
}
};
console.log(decryptDES(t))
结果如图所示
标签:ciphertext,DES,ctbpsp,解密,mode,var,CryptoJS,latin1Str 来源: https://www.cnblogs.com/wyh0923/p/16623113.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。