论坛首页 密码学讨论区 阅读主题

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

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

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-277349.htm
#2 2026-06-01 21:09:05
或者说把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);


...(已截断)
#3 2026-06-01 21:09:05
base64不是加密方法,只是一种编码方法而已。 如果加密结果是16的整倍数的话,可能是用的对称加密的填充模式,ecb,cbc之类的。 现在一般对称加密用的比较多的是aes
#4 2026-06-01 21:09:05
对称加密,你看看关键字有没有AES,DES之类的
#5 2026-06-01 21:09:05
多谢多谢
#6 2026-06-01 21:09:05
2位=>32位, 一看就是MD5的, 正常是加盐的MD5, 最后字母串的密文是64位, 猜是2段32连接的,就是将30位字符原串分成两段来加密的,

请登录后参与讨论

立即登录 注册账号