android可以为MD5抛出NoSuchAlgorithmException吗

问题描述

Android 的 MessageDigest 页面说从第一天起就支持 MD5 - https://developer.android.com/reference/java/security/MessageDigest

但是 MessageDigest.getInstance("MD5") 方法可以抛出 NoSuchAlgorithmException 并且没有 getMD5Instance 方法可以保证它。至少在 23 (Marshmallow) 之后的较新 android 版本中是否有可能无法使用 MD5?感谢回复

有另一个线程讨论了这个问题,但已经有 7 年的历史了,在 android 2.x 设备 (Gingerbread) 上报告了一些事件。 Is MD5 guaranteed to be available for use with MessageDigest in Android?

解决方法

但是 MessageDigest.getInstance("MD5") 方法可以抛出 NoSuchAlgorithmException

正确。这就是 Java JDK 定义 MessageDigest 的方式。这个类不是为 Android SDK 定制的。

没有 getMD5Instance 方法可以保证它

正确。据推测,JDK 的设置是为了能够在未来停止使用过时的算法。

至少在 23 (Marshmallow) 之后的较新 android 版本中是否有可能无法使用 MD5?

如果许多当前设备缺乏 MD5 支持,我会感到惊讶。但是:

  • 拥有 26,000 多种设备型号,并且设备制造商可以随心所欲,我们不能假设一切都支持 MD5;和

  • 我们不知道未来会带来什么——MD5 可能会因某种原因被删除