3

MessageDigestハッシュしようとしているときに使用するアルゴリズムの文字列を取ります。ここでいくつかのコードを使用して、Androidデバイスに220の「アルゴリズム」のかなり大きなリストを蓄積しました。私はそれらすべてをアルゴリズムとして使用して繰り返しましたが、MessageDigest実際にハッシュを生成するものはほとんどありません。

MessageDigest実行時に、すべてを試すことなく、どのハッシュが出力を生成するかをどのように判断できますか?

4

1 に答える 1

8

各プロバイダーのサービスを一覧表示してから、メソッドを呼び出します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());
    }
  }
}
于 2012-10-12T02:36:50.363 に答える