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

Posted web安全工具库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓逆向 -- 算法基础(MD5)相关的知识,希望对你有一定的参考价值。

一、单向散列函数(消息摘要算法)

1、不管明文多长,散列后的密文定长

2、明文不一样,散列后结果一定不一样

3、散列后的密文不可逆

4、一般用于校验数据完整性、签名 sign

5、由于密文不可逆,所以后台无法还原,也就是说他要验证,会在后台以跟前台一样的方式去重新签名一遍。也就是说他会把源数据和签名后的值一起提交到后台。所以我们要保证在签名时候的数据和提交上去的源数据一致。这种算法特喜欢在内部加入时间戳,很多粗心的学员,通常会在签名的时候取一次时间戳,然后在提交源数据的时候,又取一次时间戳,导致后台验证失败。

6、常见算法

MD5

SHA1

SHA256

SHA512

HmacMD5

HmacSHA1

HmacSHA256

二、MD5算法

1、长度128个bit,32个十六进制字符、16个字节

2、Java版源码

String bs= "逆向有你a";MessageDigest md=MessageDigest.getInstance("MD5");//我要用md5算法md.update(bs.getBytes());//我要加密的数据byte[] res = md.digest();//给我加密System.out.println("MD5加密(字节):"+Arrays.toString(res));System.out.println("MD5加密(字符串):"+bytes2HexString(res));MessageDigest mdmd = MessageDigest.getInstance("MD5");mdmd.update("逆向".getBytes(StandardCharsets.UTF_8));mdmd.update("有你".getBytes(StandardCharsets.UTF_8));byte[] mdmdres = mdmd.digest("a".getBytes(StandardCharsets.UTF_8));System.out.println(bytes2HexString(mdmdres));运行结果:MD5加密(字节):[-71, 14, 97, 33, -121, -29, -25, 68, -80, 106, 94, 49, -21, -116, -13, 120]MD5加密(字符串):B90E612187E3E744B06A5E31EB8CF378B90E612187E3E744B06A5E31EB8CF378

3、JS版源码

var CryptoJS=module.exports;function test(){    return CryptoJS.MD5("逆向有你a").toString();}console.log(test());

运行结果:

禁止非法,后果自负

欢迎关注公众号:逆向有你

欢迎关注视频号:之乎者也吧

欢迎报名安卓逆向培训,报名微信(QQ):335158573

以上是关于安卓逆向 -- 算法基础(MD5)的主要内容,如果未能解决你的问题,请参考以下文章

安卓逆向 -- 算法基础(数字签名)

安卓逆向 -- NDK开发实现MD5算法

安卓逆向 -- 调用其他APK的SO文件

安卓逆向 -- 绕过SO层签名验证

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

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