国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

了解Java密碼擴展的基礎

2019-11-18 15:27:42
字體:
供稿:網(wǎng)友

    java密碼擴展(The Java Cryptography Extension),是JDK1.4的一個重要部分,基本上,他是由一些包構成的,這些包形成了一個框架并實現(xiàn)了一些加密,密鑰生成算法和協(xié)議,消息認證碼等算法,這篇文章將想你介紹JCE的安裝和使用。
    值得注重的是,盡管JCE是JDK1.4的核心包的一部分,我們將首先用JDK1.2及高一點的版本向你演示一下假如安裝配置JCE(靜態(tài)安裝)。稍后,將向你介紹如何在不安裝的情況下使用JCE(動態(tài)安裝)。最后,將演示怎么生成密鑰和密碼,及假如進行基本的加密.解密。
提供者是什么?
    提供者是特定加密算法的實現(xiàn)者,有的提供者(提供的加密技術)是免費的,有的不免費,IBM, Bouncy Castle, 和 RSA都是一些(加密)提供者.在本文的后面,我們將考察一下來自Bouncy Castle的RSA算法。Sun 也向大家說明了假如實現(xiàn)自己的提供者(需要符合jDK的一些約定)。
靜態(tài)安裝
    在安裝和使用JCE之前,你需要從 Sun Web site(這里是以暗中sun的提供者為例).獲得他的安裝包,JCE有sun他自己的安全提供者-sunJCE,為了吧sunJCE靜態(tài)的安裝到默認的提供者列表中,你需要修改安全屬性文件:
•    <java-home>/jre/lib/security/java.security (Win32) 
•    <java-home>/jre/lib/security/java.security (UNIX)
假如你把JDK安裝在C:/jdk1.3,你需要編輯以下文件:
C:/jdk1.3/jre/lib/security/java.security 
為了安裝SunJCE,你需要在以上文件中加入:
security.PRovider.n=com.sun.crypto.provider.SunJCE
把n用你加入的提供者的優(yōu)先級代替(注重:序號要保持遞增,不能跳過,但可以調(diào)整前后順序)。
Listing A 用于查看你安裝過的提供者的信息,結果在Listing B中列出,顯示提供者的能力,比如說可用的加密算法。
Listing A: ProviderInformation.java
import java.security.Provider;
import java.security.Security;
import java.util.Set;
import java.util.Iterator;
public class ProviderInformation {
    public static void main(String[] args) {
        Provider[] providers = Security.getProviders();
        for (int i = 0; i < providers.length; i++) {
            Provider provider = providers[i];
            System.out.println("Provider name: " + provider.getName());
           System.out.println("Provider information: " + provider.getInfo());
            System.out.println("Provider version: " + provider.getVersion());
            Set entries = provider.entrySet();
            Iterator iterator = entries.iterator();
           while (iterator.hasNext()) {
                System.out.println("Property entry: " + iterator.next());
            }
        }
    }
}
Listing B: ProviderInformation.java output
Provider name: SUN
Provider information: SUN (DSA key/parameter generation; DSA signing; SHA-1, md5 digests; SecureRandom; X.509 certificates; JKS keystore)
Provider version: 1.2
Property entry: Alg.Alias.KeyFactory.1.2.840.10040.4.1=DSA
Property entry: Alg.Alias.Signature.1.2.840.10040.4.3=SHA1withDSA
Property entry: Alg.Alias.KeyPairGenerator.OID.1.2.840.10040.4.1=DSA
Property entry: Signature.SHA1withDSA KeySize=1024
Property entry: Signature.SHA1withDSA ImplementedIn=Software
動態(tài)安裝:Listing c 說明了如何在運行時動態(tài)加載安全提供者,要注重的是,當你用Security.addProvider(…)加載提供者時,它是對整個JVM環(huán)境都有用的;
Listing C: DynamicProvider.java
import java.security.Security;
public class DynamicProvider {
    public static void main(String[] args) {
        // This is all there is to it!
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
    }
}
    如前所述,當你安裝一個提供者時,你用n來指明此提供者的優(yōu)先級,但一個算法的實例被調(diào)用時,JVM將按照提供的優(yōu)先級來在已經(jīng)安裝的提供者中查找可用的實現(xiàn),并使用他首先找到的可用算法。你也可用在調(diào)研時加上附加參數(shù)來指明要在那個提供者中尋找使用的算法。

實現(xiàn)細節(jié):
JCE API包含了大量的為實現(xiàn)安全特性的類和接口,首先,我們做一個DES對稱加密的例子。

生成密鑰:
Listing D 展示了假如初時化密鑰生成器來生成密鑰;
Listing D: DESKeyGenerator.java
 

 

import javax.crypto.KeyGenerator;
import java.security.Key;
import java.security.NoSUChAlgorithmException;
import java.security.Security;
public class DESKeyGenerator {
    public static void main(String[] args) {
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
        try {
            KeyGenerator kg = KeyGenerator.getInstance("DES");
            Key key = kg.generateKey();
            System.out.println("Key format: " + key.getFormat());
            System.out.println("Key algorithm: " + key.getAlgorithm());
        }
        catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 齐河县| 海阳市| 翁牛特旗| 崇左市| 连云港市| 吕梁市| 济源市| 越西县| 清涧县| 乐陵市| 南乐县| 樟树市| 秦皇岛市| 潜江市| 林甸县| 临清市| 高州市| 平凉市| 云浮市| 内江市| 东兰县| 崇文区| 临清市| 恩施市| 甘洛县| 阜城县| 虹口区| 冀州市| 五寨县| 陆良县| 峨山| 富宁县| 和政县| 临沭县| 开远市| 荥经县| 沁阳市| 襄城县| 广宁县| 梁平县| 余干县|