Java加密解密(一)Java加密體系基礎

來源:互聯網
上載者:User

標籤:

Java加密解密(一)Java加密體系基礎 1. JCA(Java Cryptography Architecture)

提供基本的加密架構,如認證,數位簽章,訊息摘要和金鑰組產生器。其主要實現在java.security包中。

2. JCE(Java Cryptography Extension)

在JCA的基礎了作了擴充,提供了各種密碼編譯演算法、訊息摘要演算法和密鑰管理等功能。JDK提供的JCE實現主要在javax.crypto包中。
第三方提供的JCE也稱為安全提供者。由於出口限制,可能需要一個或多個安全提供者,Bouncy Castle是一個輕量級的開源免費的安全提供者

3. 安全提供者

實現了java安全性的一部分或全部,它是繼承自java.security.Provider的子類。
jre/lib/security/java.security檔案記錄了jre環境中的安全提供者

security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC

3.1 添加安全提供者的兩種方式:

1) 在java.security檔案中添加
security.provier.<N>=<Provider className>
其中N越小其優先順序越高,1為最大優先順序
2) 使用Security類
Security.addProvider與Security.insertProviderAt方法添加或插入Provider。
Security.addProvider(new BouncyCastleProvider());

方法1)將安全提供者添加到了jre環境下,但可移植性不強,如果換個環境需要再次配置java.security檔案。
方法2)通過代碼顯式添加了安全提供者,使程式的運行不受運行環境限制

3.2 安全提供者的屬性

Provider類繼承了Properties類,所以可以使用相關方法取得Provider的屬性


//查看Provider提供的屬性Provider provider = new BouncyCastleProvider(); for(Map.Entry entry : provider.entrySet()) System.out.println(entry.getKey()+": "+entry.getValue());

這些屬性的鍵定義了演算法名稱,值為相應演算法的實作類別或演算法別名。
Provider內部類Service封裝了這些屬性,並提供了一個Factory 方法獲得對應的Service執行個體
public synchronized Service getService(String type, String algorithm)
通過如下方法可以查看Provider提供的Service類型及其演算法


Map<String, StringBuilder> typeAlg = new HashMap<String, StringBuilder>(); for (Provider.Service service : provider.getServices()) { if (!typeAlg.containsKey(service.getType())) typeAlg.put(service.getType(), new StringBuilder()); typeAlg.get(service.getType()).append(service.getAlgorithm()).append(","); } for(Map.Entry entry:typeAlg.entrySet()) System.out.println(entry.getKey()+": "+entry.getValue());

BouncyCastle提供的部分Service type與algrithm如下:

Type Algrithm
MessageDigest SHA-1,SHA-224,SHA-256,SHA-384,SHA-512,MD2,MD4,MD5
Cipher AESRFC3211WRAP,AESWRAP,AES,BLOWFISH,RSA,RSA/RAW,RSA/PKCS1
Signature SHA256WITHCVC-ECDSA,ECDSA,RIPEMD160WITHECDSA,SHA224WITHECNR,SHA224WITHCVC-ECDSA,SHA256WITHECNR,SHA224WITHECDSA,SHA384WITHECNR,SHA256WITHECDSA,SHA1WITHCVC-ECDSA,SHA384WITHECDSA,SHA512WITHECDSA,SHA1WITHECNR,SHA512WITHECNR,NONEwithECDSA,MD2WithRSAEncryption,MD4WithRSAEncryption,MD5WithRSAEncryption,SHA1WithRSAEncryption,SHA224WithRSAEncryption,SHA256WithRSAEncryption,SHA384WithRSAEncryption,SHA512WithRSAEncryption,RIPEMD160WithRSAEncryption,RIPEMD128WithRSAEncryption,RIPEMD256WithRSAEncryption,DSA,NONEWITHDSA,SHA1withRSA/ISO9796-2,MD5withRSA/ISO9796-2,RIPEMD160withRSA/ISO9796-2,RSASSA-PSS,1.2.840.113549.1.1.10,SHA1withRSA/PSS,SHA224withRSA/PSS,SHA256withRSA/PSS,SHA384withRSA/PSS,SHA512withRSA/PSS,RSA,RAWRSASSA-PSS,SHA224WITHDSA,SHA256WITHDSA,SHA384WITHDSA,SHA512WITHDSA
KeyAgreement ECDH,ECDHC,ECMQV,DH,

Java加密解密(一)Java加密體系基礎

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.