栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JDK中可用的MessageDigest的完整列表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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<Service> algos = new ArrayList<>();        Set<Service> 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<Object> 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版。

别名低于实际的实现。其中一些别名是
标识符
的对象标识符或OID
。这些OID用于指示ASN.1编码数据格式内的算法,例如SSL / TLS中使用的X5.09v3证书。例如,是SHA / SHA-1 的点符号和别名。
__

1.3.14.3.2.26``{iso(1) identified-organization(3) oiw(14) secsig(3)algorithms(2) hashAlgorithmIdentifier(26)}

 --- 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的输出(不要求,包括作比较):

 --- 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"


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号