首页
社区
课程
招聘
[求助]有明文密文,大神们帮看看是那种加密方法
发表于: 2023-5-24 14:36 14176

[求助]有明文密文,大神们帮看看是那种加密方法

2023-5-24 14:36
14176

10年前混入看雪,一直感叹大神众多,一直对软件逆向兴趣浓浓,最近遇到了关于密码学问题,一筹莫展,特此求助各位大神,希望不吝赐教。
目前手头有一个后端,里面文件众多都是以 *.js 文件编写,文件众多,无法发现如何加密为密文,现贡献些明文及所对应密文,看有没有什么思路。

 

明文:20 密文:1aa7f4e1e39653e278b32f47cf29347f
明文:25 密文:409c5b79102ca385d171d3438d213b26
明文:50 密文:2c30e67f8345b662ec700b7ff501488b
明文:When he fails to get a ticket.
密文:820da0b17673c33ee4fe50230b00baabd7758ff4df7060e8487fd0d1c526ae49

望各位大神提点这是什么加密方法,基本密文是16的整数倍


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 235
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

或者说把base64和其他加密混合?因为在文件中找到了这段代码:
   encodeCustom : function (str){
        var b = new Base64().encode(str);
        var c = b.substring(0, b.length/2);
        var d = b.substring(b.length/2);
        var e = d + c.split('').reverse().join('');
        return e;
    },

    decodeCustom : function (str){
        var len = str.length;
        var s = str.substring(0, len - len/2);
        var s2 = str.substring(len - len/2);
        s2 = s2.split("").reverse().join("");
        return new Base64().decode(s2 + s);
    },

其中base64的加密方法如下:
/**
*
*  Base64 encode / decode
*
*/
function Base64() {
 
       // private property
       _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
       // public method for encoding
       this.encode = function (input) {
               var output = "";
               var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
               var i = 0;
               input = _utf8_encode(input);
               while (i < input.length) {
                       chr1 = input.charCodeAt(i++);
                       chr2 = input.charCodeAt(i++);
                       chr3 = input.charCodeAt(i++);
                       enc1 = chr1 >> 2;
                       enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                       enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                       enc4 = chr3 & 63;
                       if (isNaN(chr2)) {
                               enc3 = enc4 = 64;
                       } else if (isNaN(chr3)) {
                               enc4 = 64;
                       }
                       output = output +
                       _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
                       _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
               }
               return output;
       }
 
       // public method for decoding
       this.decode = function (input) {
               var output = "";
               var chr1, chr2, chr3;
               var enc1, enc2, enc3, enc4;
               var i = 0;
               input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
               while (i < input.length) {
                       enc1 = _keyStr.indexOf(input.charAt(i++));
                       enc2 = _keyStr.indexOf(input.charAt(i++));
                       enc3 = _keyStr.indexOf(input.charAt(i++));
                       enc4 = _keyStr.indexOf(input.charAt(i++));
                       chr1 = (enc1 << 2) | (enc2 >> 4);
                       chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
                       chr3 = ((enc3 & 3) << 6) | enc4;
                       output = output + String.fromCharCode(chr1);
                       if (enc3 != 64) {
                               output = output + String.fromCharCode(chr2);
                       }
                       if (enc4 != 64) {
                               output = output + String.fromCharCode(chr3);
                       }
               }
               output = _utf8_decode(output);
               return output;
       }
 
       // private method for UTF-8 encoding
       _utf8_encode = function (string) {
               string = string.replace(/\r\n/g,"\n");
               var utftext = "";
               for (var n = 0; n < string.length; n++) {
                       var c = string.charCodeAt(n);
                       if (c < 128) {
                               utftext += String.fromCharCode(c);
                       } else if((c > 127) && (c < 2048)) {
                               utftext += String.fromCharCode((c >> 6) | 192);
                               utftext += String.fromCharCode((c & 63) | 128);
                       } else {
                               utftext += String.fromCharCode((c >> 12) | 224);
                               utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                               utftext += String.fromCharCode((c & 63) | 128);
                       }
 
               }
               return utftext;
       }
 
       // private method for UTF-8 decoding
       _utf8_decode = function (utftext) {
               var string = "";
               var i = 0;
               var c = c1 = c2 = 0;
               while ( i < utftext.length ) {
                       c = utftext.charCodeAt(i);
                       if (c < 128) {
                               string += String.fromCharCode(c);
                               i++;
                       } else if((c > 191) && (c < 224)) {
                               c2 = utftext.charCodeAt(i+1);
                               string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                               i += 2;
                       } else {
                               c2 = utftext.charCodeAt(i+1);
                               c3 = utftext.charCodeAt(i+2);
                               string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                               i += 3;
                       }
               }
               return string;
       }
}

因为软件大,这个可能是其他数据段的加密方法,按这个加密出来的运行后和密文没有关系,我怕我看错了,望大神们不吝指教

最后于 2023-5-24 16:35 被kingmlt编辑 ,原因:
2023-5-24 16:32
0
雪    币: 737
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
base64不是加密方法,只是一种编码方法而已。 如果加密结果是16的整倍数的话,可能是用的对称加密的填充模式,ecb,cbc之类的。 现在一般对称加密用的比较多的是aes
2023-6-18 16:59
0
雪    币: 185
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
对称加密,你看看关键字有没有AES,DES之类的
2023-8-9 10:54
0
雪    币: 235
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
多谢多谢
2023-11-4 17:17
0
游客
登录 | 注册 方可回帖
返回
//