吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2782|回复: 10
收起左侧

[Android 求助] 求助AES解密

[复制链接]
蓝颜永生 发表于 2020-8-24 19:49
100吾爱币
研究了一下午,也没找到IV。。。
[Java] 纯文本查看 复制代码
public class AesUtil {
    private static String aesKey = "Y5djB0D93sIbeRzZ";
    private static String hexStr = "0123456789abcdef";

    public static String getKey() {
        return aesKey;
    }

    public static String encryptToHex(String str, String str2) {
        try {
            return bytesToHexString(aesEncryptToBytes(str, str2));
        } catch (Exception e) {
            System.out.println(e.toString());
            return null;
        }
    }

    public static String decryptHex(String str, String str2) {
        try {
            return aesDecryptByBytes(hexStringToBytes(str), str2);
        } catch (Exception e) {
            System.out.println(e.toString());
            return null;
        }
    }

    public static String bytesToHexString(byte[] bArr) {
        String str = "";
        for (byte b : bArr) {
            String valueOf = String.valueOf(hexStr.charAt((b & 240) >> 4));
            String str2 = valueOf + String.valueOf(hexStr.charAt(bArr[r1] & 15));
            str = str + str2;
        }
        return str;
    }

    public static byte[] hexStringToBytes(String str) {
        int length = str.length() / 2;
        byte[] bArr = new byte[length];
        for (int i = 0; i < length; i++) {
            int i2 = i * 2;
            bArr[i] = (byte) (((byte) (hexStr.indexOf(str.charAt(i2)) << 4)) | ((byte) hexStr.indexOf(str.charAt(i2 + 1))));
        }
        return bArr;
    }

    private static byte[] aesEncryptToBytes(String str, String str2) throws Exception {
        Cipher instance = Cipher.getInstance("AES/CBC/PKCS7Padding");
        byte[] bytes = str2.getBytes();
        instance.init(1, new SecretKeySpec(bytes, "AES"), new IvParameterSpec(bytes));
        return instance.doFinal(str.getBytes());
    }

    private static String aesDecryptByBytes(byte[] bArr, String str) throws Exception {
        Cipher instance = Cipher.getInstance("AES/CBC/PKCS7Padding");
        byte[] bytes = str.getBytes();
        instance.init(2, new SecretKeySpec(bytes, "AES"), new IvParameterSpec(bytes));
        return new String(instance.doFinal(bArr));
    }

    public static String getSubUtilSimple(String str, String str2) {
        Matcher matcher = Pattern.compile(str2).matcher(str);
        return matcher.find() ? matcher.group(1) : "";
    }
}


[Java] 纯文本查看 复制代码
public class DownloadInfo {
    private static String hexStr = "0123456789abcdef";

    public static String decryptHex(String str) {
        try {
            return aesDecryptByBytes(hexStringToBytes(str), "DtXZcHh9XJ5SfPAe");
        } catch (Exception e) {
            System.out.println(e.toString());
            return null;
        }
    }

    private static String aesDecryptByBytes(byte[] bArr, String str) throws Exception {
        Cipher instance = Cipher.getInstance("AES/CBC/PKCS7Padding");
        byte[] bytes = str.getBytes();
        instance.init(2, new SecretKeySpec(bytes, "AES"), new IvParameterSpec(bytes));
        return new String(instance.doFinal(bArr));
    }

    public static byte[] hexStringToBytes(String str) {
        int length = str.length() / 2;
        byte[] bArr = new byte[length];
        for (int i = 0; i < length; i++) {
            int i2 = i * 2;
            bArr[i] = (byte) (((byte) (hexStr.indexOf(str.charAt(i2)) << 4)) | ((byte) hexStr.indexOf(str.charAt(i2 + 1))));
        }
        return bArr;
    }

最佳答案

查看完整内容

AesUtil key/iv:Y5djB0D93sIbeRzZ DownloadInfo key/iv:DtXZcHh9XJ5SfPAe key和iv是相同的

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

某科学的阿卡林 发表于 2020-8-24 19:49
本帖最后由 某科学的阿卡林 于 2020-8-24 20:12 编辑

AesUtil key/iv:Y5djB0D93sIbeRzZ
DownloadInfo key/iv:DtXZcHh9XJ5SfPAe
key和iv是相同的

免费评分

参与人数 1热心值 +1 收起 理由
liphily + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

 楼主| 蓝颜永生 发表于 2020-8-24 19:53
ps122 发表于 2020-8-24 20:02
DownloadInfo里面解密decryptHex可以直接调用,"DtXZcHh9XJ5SfPAe"就是那个key
AesUtil里面加解密encryptToHex和decryptHex也能调用,后面的参数str2应该就是那个key,getKey()里面看到使用的是"Y5djB0D93sIbeRzZ"

两种解密直接调用看一下

免费评分

参与人数 1热心值 +1 收起 理由
liphily + 1 谢谢@Thanks!

查看全部评分

 楼主| 蓝颜永生 发表于 2020-8-24 20:23
某科学的阿卡林 发表于 2020-8-24 20:02
AesUtil key/iv:Y5djB0D93sIbeRzZ
DownloadInfo key/iv:DtXZcHh9XJ5SfPAe
key和iv是相同的

我用CryptoFuecker测试也是一样的 但是解密是错的 CBC pkcs5padding 128 utf-8

免费评分

参与人数 1热心值 +1 收起 理由
liphily + 1 热心回复!

查看全部评分

某科学的阿卡林 发表于 2020-8-24 20:28
蓝颜永生 发表于 2020-8-24 20:23
我用CryptoFuecker测试也是一样的 但是解密是错的 CBC pkcs5padding 128 utf-8

iv必然等于key。
在AesUtil这个类中我并没有看到aesKey成员的使用,你确定key是该成员吗?回溯到上层看看传的key是何值。
另外你考虑了bytesToHexString的转换吗

免费评分

参与人数 1热心值 +1 收起 理由
liphily + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

windy_ll 发表于 2020-8-24 21:50
aeskey不是摆在那里吗
 楼主| 蓝颜永生 发表于 2020-8-24 22:01
windy_ll 发表于 2020-8-24 21:50
aeskey不是摆在那里吗

iv没有啊 老哥
沉默之剑 发表于 2020-8-24 23:42
[Python] 纯文本查看 复制代码
from Crypto.Cipher import AES

# cipher = AES.new(key, AES.MODE_CBC, iv)
cipher = AES.new(key, AES.MODE_CBC)
data = cipher.decrypt(data)

python里面的key和iv可以相同,iv是key的前16位(AES_128)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
蓝颜永生 + 1 + 1 热心回复!

查看全部评分

oxyroy 发表于 2020-8-26 10:59
把加密编码弄进去,解密就好了。
fc5363f901a8bdb7fc2a8a2839e0399.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 20:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表