?
密鑰的產生
對稱金鑰的產生
??? 對稱式加密採用了對稱密碼編碼技術,它的特點是檔案加密和解密使用相同的密鑰,即加密金鑰也可以用作解密密鑰。這種方法在密碼學中叫做對稱式加密演算法,對稱式加密演算法使用起來簡單快捷,密鑰較短,且破譯困難,除了資料加密標準(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