一个简单的小程序可以列出JDK加密服务提供者、系统支持的消息摘要算法。
可以看到列出系统已经安装的所有的JCE提供者,并且著名的一些的消息摘要算法:MD5,生成公钥和私钥对的算法RSA等都在其中:
import java.security.Provider; import java.security.Security; public class Check { public static void main(String[] args) { System.out.println("-------列出加密服务提供者-----"); Provider[] pro = Security.getProviders(); for (Provider p : pro) { System.out.println("Provider:" + p.getName() + " - version:" + p.getVersion()); System.out.println(p.getInfo()); } System.out.println(""); System.out.println("-------列出系统支持的消息摘要算法:"); for (String s : Security.getAlgorithms("MessageDigest")) { System.out.println(s); } System.out.println("-------列出系统支持的生成公钥和私钥对的算法:"); for (String s : Security.getAlgorithms("KeyPairGenerator")) { System.out.println(s); } } }
输出
-------列出加密服务提供者----- Provider:SUN - version:1.8 SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration) Provider:SunRsaSign - version:1.8 Sun RSA signature provider Provider:SunEC - version:1.8 Sun Elliptic Curve provider (EC, ECDSA, ECDH) Provider:SunJSSE - version:1.8 Sun JSSE provider(PKCS12, SunX509/PKIX key/trust factories, SSLv3/TLSv1/TLSv1.1/TLSv1.2) Provider:SunJCE - version:1.8 SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC) Provider:SunJGSS - version:1.8 Sun (Kerberos v5, SPNEGO) Provider:SunSASL - version:1.8 Sun SASL provider(implements client mechanisms for: DIGEST-MD5, GSSAPI, EXTERNAL, PLAIN, CRAM-MD5, NTLM; server mechanisms for: DIGEST-MD5, GSSAPI, CRAM-MD5, NTLM) Provider:XMLDSig - version:1.8 XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory; C14N 1.0, C14N 1.1, Exclusive C14N, Base64, Enveloped, XPath, XPath2, XSLT TransformServices) Provider:SunPCSC - version:1.8 Sun PC/SC provider Provider:SunMSCAPI - version:1.8 Sun's Microsoft Crypto API provider -------列出系统支持的消息摘要算法: SHA-384 SHA-224 SHA-256 MD2 SHA SHA-512 MD5 -------列出系统支持的生成公钥和私钥对的算法: RSA DSA DIFFIEHELLMAN EC
JCE是什么?
Java Cryptography Extension(JCE)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象。它不对外出口,用它开发完成封装后将无法调用。
jar包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
在早期JDK版本中,由于受美国的密码出口条例约束,Java中涉及加解密功能的API被限制出口,所以Java中安全组件被分成了两部分: 不含加密功能的JCA(Java Cryptography Architecture )和含加密功能的JCE(Java Cryptography Extension)。在JDK1.1-1.3版本期间,JCE属于扩展包,仅供美国和加拿大的用户下载,JDK1.4+版本后,随JDK核心包一起分发。JCA与JCE的API体系如下:
JCE的API都在javax.crypto包下,核心功能包括:加解密、密钥生成(对称)、MAC生成、密钥协商,