MessageDigest在您要哈希时使用一个字符串来表示要使用的算法.我在这里使用了一些代码来在我的Android设备上累积一个相当大的220"算法"列表.我使用它们作为算法迭代所有它们,MessageDigest并且它们中很少实际产生哈希.
我怎样才能在运行时确定哪些哈希值MessageDigest会产生输出而不尝试每一个?
列出每个提供商的服务,然后调用该getType()方法.如果是MessageDigest,那么这是一个哈希算法.就像是:
Provider[] providers = Security.getProviders();
for (Provider p : providers) {
String providerStr = String.format("%s/%s/%f\n", p.getName(),
p.getInfo(), p.getVersion());
Set<Service> services = p.getServices();
for (Service s : services) {
if ("MessageDigest".equals(s.getType())) {
System.out.printf("\t%s/%s/%s", s.getType(),
s.getAlgorithm(), s.getClassName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2323 次 |
| 最近记录: |