安全矩阵

 找回密码
 立即注册
搜索
查看: 2461|回复: 0

安卓逆向 -- 算法基础(AES)

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-8-29 16:37:19 | 显示全部楼层 |阅读模式
安卓逆向 -- 算法基础(AES) (qq.com)
安卓逆向 -- 算法基础(AES)[url=]web安全工具库[/url] 昨天
将在08月31日 22:00 直播
预约
视频号

之乎者也吧
#安卓逆向#算法基础#AES
视频号
一、AES算法
可以理解为DES算法的升级版,同样需要加密key,IV向量,加密模式和填充模式,java版好像只支持aes-128位的,也就是16个字节,再高一点就需要破解了
二、Java版源码
  1. String bs= "逆向有你a";
  2. SecretKeySpec aeskey = new SecretKeySpec("1234567812345678".getBytes(StandardCharsets.UTF_8),"AES");//获取密钥的实例
  3. IvParameterSpec aesiv = new IvParameterSpec("1234567812345678".getBytes(StandardCharsets.UTF_8));//获取IV向量的实例
  4. Cipher aescp = Cipher.getInstance("AES/CBC/PKCS5Padding");//告诉系统加密模式还有填充方式
  5. aescp.init(1,aeskey,aesiv);//初始化加密方法
  6. byte[] aesres = aescp.doFinal(bs.getBytes(StandardCharsets.UTF_8));//使用dofinal加密
  7. System.out.println("aes加密(字节):"+Arrays.toString(aesres));
  8. System.out.println("aes加密(Hex):"+bytes2HexString(aesres));
  9. System.out.println("aes加密(Base64):"+Base64.getEncoder().encodeToString(aesres));
  10. aescp.init(2,aeskey,aesiv);//初始化解密
  11. byte[] jmaesres = aescp.doFinal(Base64.getDecoder().decode("MEpgbtD9muLvf6krtX86Og==".getBytes(StandardCharsets.UTF_8)));
  12. System.out.println("aes解密(Base64):"+new String(jmaesres));
  13. byte[] jmhexbyte =hexString2Bytes("304A606ED0FD9AE2EF7FA92BB57F3A3A");
  14. jmhexbyte=aescp.doFinal(jmhexbyte);
  15. System.out.println("aes解密(Hex):"+new String(jmhexbyte));
复制代码
三、JS版
  1. var key=CryptoJS.enc.Utf8.parse("1234567812345678");
  2. var iv=CryptoJS.enc.Utf8.parse("1234567812345678");
  3. var res=CryptoJS.AES.encrypt("逆向有你a",key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7,format:CryptoJS.format.Hex});
  4. return res.toString().toUpperCase();
复制代码
禁止非法,后果自负
欢迎关注公众号:逆向有你
欢迎关注视频号:之乎者也吧


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 18:28 , Processed in 0.012056 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

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