BouncyCastle JCE實踐(三)

來源:互聯網
上載者:User
?

密鑰的產生

對稱金鑰的產生

??? 對稱式加密採用了對稱密碼編碼技術,它的特點是檔案加密和解密使用相同的密鑰,即加密金鑰也可以用作解密密鑰。這種方法在密碼學中叫做對稱式加密演算法,對稱式加密演算法使用起來簡單快捷,密鑰較短,且破譯困難,除了資料加密標準(DES),另一個對稱金鑰密碼編譯系統系統是國際資料加密演算法(IDEA),它比DES的加密性好,而且對電腦功能要求也沒有那麼高。IDEA加密標準由PGP(Pretty Good Privacy)系統使用。

//首先要import javax.crypto.*;

SecretKey key=null;

???? try

{

//指定演算法,這裡為DES;如果想用Blowfish演算法,則用 getInstance("Blowfish")

//BouncyCastle基本上支援所有通用標準演算法

KeyGenerator keygen=KeyGenerator.getInstance("DES");

//指定密鑰長度,長度越高,加密強度越大

keygen.init(56);

//產生密鑰

key=keygen.generateKey();

//構造輸出檔案,這裡的目錄是動態,根據使用者名稱稱來構造目錄

???? ObjectOutputStream keyFile=new ObjectOutputStream(new FileOutputStream

???????????? ("c://安全檔案//"+misClass.username+"//對稱//對稱金鑰//yhb.des"));

???? keyFile.writeObject(key);

???? keyFile.close();

???? }

???? catch(NoSuchAlgorithmException e5)

{

// generateKey()拋出的異常

???? System.out.print("no such algorithm");

???? System.exit(0);

???? }

???? catch(IOException e4)

???? {

???? System.out.print("error when generate the des key");

???? System.exit(0);

}

非對稱金鑰的產生

1976年,美國學者Dime和Henman為解決資訊公開傳送和密鑰管理問題,提出一種新的金鑰交換協議,允許在不安全的媒體上的通訊雙方交換資訊,安全地達成一致的密鑰,這就是“公開密鑰系統”。相對於“對稱式加密演算法”這種方法也叫做“非對稱式加密演算法”。

與對稱式加密演算法不同,非對稱式加密演算法需要兩個密鑰:公開密鑰(publickey)和私人密鑰(privatekey)。公開密鑰與私人密鑰是一對,如果用公開金鑰組資料進行加密,只有用對應的私人密鑰才能解密;如果用私人金鑰組資料進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱式加密演算法。

//金鑰組

??? KeyPair keys=null;

??? try

{

//指定演算法

KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");

//指定長度

??? kpg.initialize(1024);

keys=kpg.genKeyPair();

//公開金鑰

byte[] key1=keys.getPublic().getEncoded();

//私密金鑰

??? byte[] key2=keys.getPrivate().getEncoded();

?

??? //構造公開金鑰檔案並寫入公開金鑰

FileOutputStream keyFile1=new FileOutputStream

?????? ("c://安全檔案//"+misClass.username+"//非對稱//本人公私密金鑰//yhb.public");

???? keyFile1.write(key1);

???? keyFile1.close();

??? //構造私密金鑰檔案並寫入私密金鑰

??? keyFile1=new FileOutputStream

???? ("c://安全檔案//"+misClass.username+"//非對稱//本人公私密金鑰//yhb.private");

??? keyFile1.write(key2);

??? keyFile1.close();

??? }

??? catch(NoSuchAlgorithmException e8)

{

//演算法異常

???? System.out.print("no such algorithm");

???? System.exit(0);

???? }

???? catch(IOException e9)

???? {

???? System.out.print("error when generate the rsa key");

???? System.exit(0);

???? }

?

作者又名HongSoft,研究領域:1)基於工作流程的BPM系統研究2)基於JAVA的資訊安全技術.歡迎和大家討論JAVA相關各方面問題 hongbosoftware@163.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.