Hash算法不安全 - MessageDigest.getInstance方法 一、API 1. 继承关系 【1】java.lang.Object 【2】java.security.MessageDigestSpi 【3】java.security.MessageDigest 2. 主要方法 【1】getInstance(String algorithm) 【2】getInstance(String algorithm, String provider) 【3】getInstance(String algorithm, Provider provider) 【4】其他方法 https://developer.android.com/reference/java/security/MessageDigest.html 3. 示例 【1】使用MD5哈希算法的语句 【2】Android提供的MessageDigest算法 【3】参考链接 http://hubingforever.blog.163.com/blog/static/171040579201210781650340/ 二、触发条件 1. 调用MessageDigest类的getInstance方法 【1】对应到smali语句的特征 invoke-static {v1}, Ljava/security/MessageDigest;-> getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; 2. 寄存器赋值的判断 const-string v1, "MD5" const-string v1, "SHA-1" 三、漏洞原理 【1】使用不安全的Hash算法(MD5/SHA-1)加密信息,存在被破解的风险 【2】更多内容 http://www.droidsec.cn/android应用安全开发之浅谈加密算法的坑/ 四、修复建议 【1】建议使用SHA-256等安全性更高的Hash算法