安卓逆向 -- 自吐算法(3DES和AES)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 安卓逆向 -- 自吐算法(3DES和AES)

一、3DES源码


String bs= "逆向有你a";
DESedeKeySpec des3key = new DESedeKeySpec(("123456781234567812345678".getBytes(StandardCharsets.UTF_8)));//密钥必须是24个字节
SecretKeyFactory keydes3 = SecretKeyFactory.getInstance("DESede");
SecretKey secretKey3 = keydes3.generateSecret(des3key);
Cipher cipher3des = Cipher.getInstance("DESede/ECB/PKCS5Padding");
cipher3des.init(1,secretKey3);
byte[] des3res = cipher3des.doFinal(bs.getBytes(StandardCharsets.UTF_8));
System.out.println("3DES加密(字节):"+Arrays.toString(des3res));
System.out.println("3DES加密(Hex):"+bytes2HexString(des3res));
System.out.println("3DES加密(Base64):"+Base64.getEncoder().encodeToString(des3res));
cipher3des.init(2,secretKey3);//初始化解密
byte[] jm3desres = cipher3des.doFinal(Base64.getDecoder().decode("vN3o+PDQ0Yo8y5+InEzpwA==".getBytes(StandardCharsets.UTF_8)));
System.out.println("3DES解密(Base64):"+new String(jm3desres));
byte[] des3hexbyte =hexString2Bytes("BCDDE8F8F0D0D18A3CCB9F889C4CE9C0");
jm3desres=cipher3des.doFinal(des3hexbyte);
System.out.println("3DES解密(Hex):"+new String(jm3desres));


二、分析源码,需hook的内容


3DES除了key和DES有区别外,其他的iv向量和dofinal都一样,所以只要hook类javax.crypto.spec.DESedeKeySpec就可以了


三、hook源码


XposedBridge.hookAllConstructors(XposedHelpers.findClass(
        "javax.crypto.spec.DESedeKeySpec",
        loadPackageParam.classLoader),
        new XC_MethodHook() {
            /* access modifiers changed from: protected */
            public void beforeHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
                Log.e("逆向有你", "Stack:", new Throwable("stack dump"));
                byte[] keybyte = new byte[24];
                int offset = 0;
                if (param.args.length != 1) {
                    offset = ((Integer) param.args[1]).intValue();
                }
                System.arraycopy((byte[]) param.args[0], offset, keybyte, 0, 24);
                String keyHex = b2s(keybyte);
                String keyB64 = Base64.encodeToString(keybyte, 0);
                Log.d("逆向有你", "3DESKey:" + new String(keybyte));
                Log.d("逆向有你", "3DESKeyHex:" + keyHex);
                Log.d("逆向有你", "3DESKeyB64:" + keyB64);
                Log.d("逆向有你", "=====================3DESKey=========================");
            }
        });


四、AES算法源码


String bs= "逆向有你a";
SecretKeySpec aeskey = new SecretKeySpec("1234567812345678".getBytes(StandardCharsets.UTF_8),"AES");//获取密钥的实例
IvParameterSpec aesiv = new IvParameterSpec("1234567812345678".getBytes(StandardCharsets.UTF_8));//获取IV向量的实例
Cipher aescp = Cipher.getInstance("AES/CBC/PKCS5Padding");//告诉系统加密模式还有填充方式
aescp.init(1,aeskey,aesiv);//初始化加密方法
byte[] aesres = aescp.doFinal(bs.getBytes(StandardCharsets.UTF_8));//使用dofinal加密
System.out.println("aes加密(字节):"+Arrays.toString(aesres));
System.out.println("aes加密(Hex):"+bytes2HexString(aesres));
System.out.println("aes加密(Base64):"+Base64.getEncoder().encodeToString(aesres));
aescp.init(2,aeskey,aesiv);//初始化解密
byte[] jmaesres = aescp.doFinal(Base64.getDecoder().decode("MEpgbtD9muLvf6krtX86Og==".getBytes(StandardCharsets.UTF_8)));
System.out.println("aes解密(Base64):"+new String(jmaesres));
byte[] jmhexbyte =hexString2Bytes("304A606ED0FD9AE2EF7FA92BB57F3A3A");
jmhexbyte=aescp.doFinal(jmhexbyte);
System.out.println("aes解密(Hex):"+new String(jmhexbyte));


禁止非法,后果自负


目录
相关文章
|
算法 安全 数据安全/隐私保护
基于AES的遥感图像加密算法matlab仿真
本程序基于MATLAB 2022a实现,采用AES算法对遥感图像进行加密与解密。主要步骤包括:将彩色图像灰度化并重置大小为256×256像素,通过AES的字节替换、行移位、列混合及轮密钥加等操作完成加密,随后进行解密并验证图像质量(如PSNR值)。实验结果展示了原图、加密图和解密图,分析了图像直方图、相关性及熵的变化,确保加密安全性与解密后图像质量。该方法适用于保护遥感图像中的敏感信息,在军事、环境监测等领域具有重要应用价值。
602 35
|
算法 安全 数据安全/隐私保护
基于AES的图像加解密算法matlab仿真,带GUI界面
本程序基于AES算法实现图像的加解密功能,并提供MATLAB GUI界面操作,支持加密与解密。运行环境为MATLAB 2022A,测试结果无水印。核心代码通过按钮回调函数完成AES加密与解密流程,包括字节替换、行移位、列混淆及密钥加等步骤。解密过程为加密逆向操作,确保数据安全性与完整性。完整程序结合128位块加密与可选密钥长度,适用于图像信息安全场景。
|
存储 安全 算法
AES算法
【10月更文挑战第30天】AES算法
2289 2
|
算法 安全 搜索推荐
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
1067 9
|
算法 JavaScript 前端开发
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
852 1
|
安全 测试技术 Go
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
1199 0
|
算法 安全 数据安全/隐私保护
AES算法逆向实战--某思路
本文是关于AES加密算法的逆向分析实战。通过跟栈方式找出加密位置,发现在`jslencode`函数中完成账号和密码加密。使用CryptoJS库,示例代码展示了如何用AES进行加密,其中`397151C04723421F`作为key,加密手机号和密码,并打印结果。
636 1
|
安全 算法 数据库
MD5、SHA、DES、AES、RSA的算法说明
【5月更文挑战第10天】MD5、SHA、DES、AES、RSA的算法说明
2102 2
|
算法 安全 网络安全
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
|
算法 安全 Java
AES加解密算法:原理、应用与安全性解析
AES加解密算法:原理、应用与安全性解析

热门文章

最新文章