所以,阅读这篇文章: 我如何计算在Android中字符串的SHA-256散列?
和文档: http://developer.android.com/reference/java/security/MessageDigest.html
我很好奇; 该手机将支持SHA-256? 在文档,关于“抛出:NoSuchAlgorithmException”行让我觉得有些手机不支持所有的算法。 我去实现这一个应用程序,并期望它去努力,我想知道,如果有人知道这事,所有的手机都在同一之前...?
我觉得奇怪,MessageDigest类不具备的一些常量来接你要使用的算法。
所有的Android设备支持SHA-256。 该NoSuchAlgorithmException
表明请求的算法无法找到,是必要的,因为该方法需要一个String
的算法名称的说法。 如果您在“富-256”获得通过,该方法的唯一的办法就是抛出NoSuchAlgorithmException
因为,我无法理解的原因,没有算法,称为“富-256”。 假设你传递你确定一个名称是Android的可以使用的算法,你永远不会看到这个异常。
添加抛出:NoSuchAlgorithmException如下:
public static String SHA256 (String text) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(text.getBytes());
byte[] digest = md.digest();
return Base64.encodeToString(digest, Base64.DEFAULT);
}
SHA-256withRSA在较旧的Android版本不支持(验证了安卓4.0.3,4.1.1相同)。 我曾经历过这个问题,而使用JSCEP。 通过SCEP服务器返回的摘要算法SHA-256。 但是,SHA-256withRSA没有出现在这些版本的Android任何默认SecurityProviders。 发现相关链接: Android的支持,这包签名算法哪个版本?
此链接显示,SHA-256withRSA后来补充说: https://android-review.googlesource.com/44360
根据Android的文件以了解消息摘要 ,SHA-256,因为API支持1。