java messagedigest_java – JDK中可用的MessageDigest的完整列表

除了JB的答案之外,我还想提出一个解决方案来查询运行时的可用算法.当然,这种方法很容易转换为Cipher,SecureRandom,Mac,KeyAgreement,KeyFactory或任何其他类型的算法.

程序

import java.security.MessageDigest;

import java.security.Provider;

import java.security.Provider.Service;

import java.security.Security;

import java.util.ArrayList;

import java.util.List;

import java.util.Set;

public class ShowHashAlgorithms {

private static final void showHashAlgorithms(Provider prov, Class> typeClass) {

String type = typeClass.getSimpleName();

List algos = new ArrayList<>();

Set services = prov.getServices();

for (Service service : services) {

if (service.getType().equalsIgnoreCase(type)) {

algos.add(service);

}

}

if (!algos.isEmpty()) {

System.out.printf(" --- Provider %s, version %.2f --- %n", prov.getName(), prov.getVersion());

for (Service service : algos) {

String algo = service.getAlgorithm();

System.out.printf("Algorithm name: \"%s\"%n", algo);

}

}

// --- find aliases (inefficiently)

Set keys = prov.keySet();

for (Object key : keys) {

final String prefix = "Alg.Alias." + type + ".";

if (key.toString().startsWith(prefix)) {

String value = prov.get(key.toString()).toString();

System.out.printf("Alias: \"%s\" -> \"%s\"%n",

key.toString().substring(prefix.length()),

value);

}

}

}

public static void main(String[] args) {

Provider[] providers = Security.getProviders();

for (Provider provider : providers) {

showHashAlgorithms(provider, MessageDigest.class);

}

}

}

Sun提供商输出

此代码将为Java 1.8生成以下输出.请注意,由于API提供程序的一些旧错误,提供程序版本仅作为double出现.因此,无法区分版本1.80或版本1.8.0.

别名低于实际实现.这些别名中的一些是点符号的Object Identifiers或OID.这些OID用于指示ASN.1编码数据格式内的算法,例如SSL / TLS中使用的X5.09v3证书.例如,1.3.14.3.2.26是{iso(1)identify-organization(3)oiw(14)secsig(3)算法(2)hashAlgorithmIdentifier(26)}的点符号和SHA / SHA-1的别名.

--- Provider SUN, version 1.80 ---

Algorithm name: "MD2"

Algorithm name: "MD5"

Algorithm name: "SHA"

Algorithm name: "SHA-224"

Algorithm name: "SHA-256"

Algorithm name: "SHA-384"

Algorithm name: "SHA-512"

Alias: "SHA-1" -> "SHA"

Alias: "OID.1.3.14.3.2.26" -> "SHA"

Alias: "1.3.14.3.2.26" -> "SHA"

Alias: "OID.2.16.840.1.101.3.4.2.4" -> "SHA-224"

Alias: "OID.2.16.840.1.101.3.4.2.3" -> "SHA-512"

Alias: "OID.2.16.840.1.101.3.4.2.2" -> "SHA-384"

Alias: "OID.2.16.840.1.101.3.4.2.1" -> "SHA-256"

Alias: "2.16.840.1.101.3.4.2.4" -> "SHA-224"

Alias: "2.16.840.1.101.3.4.2.3" -> "SHA-512"

Alias: "2.16.840.1.101.3.4.2.2" -> "SHA-384"

Alias: "2.16.840.1.101.3.4.2.1" -> "SHA-256"

Alias: "SHA1" -> "SHA"

Bouncy Castle提供者输出

Bouncy Castle的输出(未被要求,包括用于比较):

--- Provider BC, version 1.51 ---

Algorithm name: "GOST3411"

Algorithm name: "MD2"

Algorithm name: "MD4"

Algorithm name: "MD5"

Algorithm name: "SHA-1"

Algorithm name: "RIPEMD128"

Algorithm name: "RIPEMD160"

Algorithm name: "RIPEMD256"

Algorithm name: "RIPEMD320"

Algorithm name: "SHA-224"

Algorithm name: "SHA-256"

Algorithm name: "SHA-384"

Algorithm name: "SHA-512"

Algorithm name: "SHA-512/224"

Algorithm name: "SHA-512/256"

Algorithm name: "SHA3-224"

Algorithm name: "SHA3-256"

Algorithm name: "SHA3-384"

Algorithm name: "SHA3-512"

Algorithm name: "Skein-256-128"

Algorithm name: "Skein-256-160"

Algorithm name: "Skein-256-224"

Algorithm name: "Skein-256-256"

Algorithm name: "Skein-512-128"

Algorithm name: "Skein-512-160"

Algorithm name: "Skein-512-224"

Algorithm name: "Skein-512-256"

Algorithm name: "Skein-512-384"

Algorithm name: "Skein-512-512"

Algorithm name: "Skein-1024-384"

Algorithm name: "Skein-1024-512"

Algorithm name: "Skein-1024-1024"

Algorithm name: "SM3"

Algorithm name: "TIGER"

Algorithm name: "WHIRLPOOL"

Alias: "SHA256" -> "SHA-256"

Alias: "SHA224" -> "SHA-224"

Alias: "1.3.36.3.2.3" -> "RIPEMD256"

Alias: "1.3.36.3.2.2" -> "RIPEMD128"

Alias: "1.3.36.3.2.1" -> "RIPEMD160"

Alias: "1.2.156.197.1.401" -> "SM3"

Alias: "SHA512" -> "SHA-512"

Alias: "SHA1" -> "SHA-1"

Alias: "GOST" -> "GOST3411"

Alias: "2.16.840.1.101.3.4.2.6" -> "SHA-512/256"

Alias: "2.16.840.1.101.3.4.2.5" -> "SHA-512/224"

Alias: "2.16.840.1.101.3.4.2.4" -> "SHA-224"

Alias: "2.16.840.1.101.3.4.2.3" -> "SHA-512"

Alias: "2.16.840.1.101.3.4.2.2" -> "SHA-384"

Alias: "2.16.840.1.101.3.4.2.1" -> "SHA-256"

Alias: "1.2.643.2.2.9" -> "GOST3411"

Alias: "1.3.14.3.2.26" -> "SHA-1"

Alias: "SHA512/224" -> "SHA-512/224"

Alias: "GOST-3411" -> "GOST3411"

Alias: "SHA512256" -> "SHA-512/256"

Alias: "SHA384" -> "SHA-384"

Alias: "SM3" -> "SM3"

Alias: "SHA" -> "SHA-1"

Alias: "1.2.840.113549.2.5" -> "MD5"

Alias: "1.2.840.113549.2.4" -> "MD4"

Alias: "1.2.840.113549.2.2" -> "MD2"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值