js AES-128-CBC 解密易班轻应用verify_request

2021-04-25 23:26

阅读:421

YPE html>

标签:write   技术   stat   ring   加密算   temp   代码   code   its   

易班文档

易班轻应用框架服务通过get方式在易班客户端webview或浏览器重定向加载应用实际地址,以提供给应用用户授权状态和基本信息数据, 请避免应用实际地址使用自带get参数。加密字符串使用了AES-128-CBC对称加密算法,其中应用的AppSecret为解密的密钥,AppID为向量。 原32字符长度appID应用依旧采用AES-256-CBC对称加密算法。

使用CryptoJS进行解密,CryptoJS解密base64格式的密文,返回的verify_request为16进制格式的,所以要将16进制转为base64格式,加密方法为AES-128-CBC,填充ZeroPadding
技术图片

function decrypted(data) {

            var padding = '0000000000000000000';
            var temp_key = AppSecret;
            var temp_iv =AppID;
     
            var key = CryptoJS.enc.Latin1.parse(temp_key.substring(0, 32));
            var iv = CryptoJS.enc.Latin1.parse(temp_iv.substring(0, 16));



            var decrypted = CryptoJS.AES.decrypt(sha1_to_base64(data), key, { iv: iv, padding: CryptoJS.pad.ZeroPadding });
            var decodeData = decrypted.toString(CryptoJS.enc.Utf8);
            return JSON.parse(decodeData);
        }
        
        function sha1_to_base64(sha1) {
            var digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
            var base64_rep = "";
            var cnt = 0;
            var bit_arr = 0;
            var bit_num = 0;

            for (var n = 0; n = 'A' && sha1[n] = 'a' && sha1[n] = 6) {
                    bit_num -= 6;

                    base64_rep += digits[bit_arr >>> bit_num];
                    bit_arr &= ~(-1  0) {
                bit_arr  0) {
                for (var n = 0; n 

完整代码





Document

hello

参考

JS:十六进制字符串转为base64

https://blog.csdn.net/herongoal/article/details/81137895

ase在线解密

http://ctf.ssleye.com/caes.html

CryptoJS

https://github.com/sytelus/CryptoJS

js AES-128-CBC 解密易班轻应用verify_request

标签:write   技术   stat   ring   加密算   temp   代码   code   its   

原文地址:https://www.cnblogs.com/lzyuid/p/12228285.html


评论


亲,登录后才可以留言!