非對稱型加密非常適合多個客戶端和服務器之間的秘密通訊 客戶端使用同壹個公鑰將明文加密 而這個公鑰不能逆向的解密 密文發送到服務器後有服務器端用私鑰解密 這樣就做到了明文的加密傳送
非對稱型加密也有它先天的缺點 加密 解密速度慢制約了它的發揮 如果妳有大量的文字需要加密傳送 建議妳通過非對稱型加密來把對稱型 密鑰 分發到客戶端 及時更新對稱型 密鑰
import java io *;
import java security *;
import javax crypto *;
import javax crypto spec *;
/**
* <p>Title: RSA非對稱型加密的公鑰和私鑰</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) </p>
* <p>Company: </p>
* @author not attributable
* @version
*/
public class KeyRSA {
private KeyPairGenerator kpg = null;
private KeyPair kp = null;
private PublicKey public_key = null;
private PrivateKey private_key = null;
private FileOutputStream public_file_out = null;
private ObjectOutputStream public_object_out = null;
private FileOutputStream private_file_out = null;
private ObjectOutputStream private_object_out = null;
/**
* 構造函數
* @param in 指定密匙長度(取值範圍 ~ )
* @throws NoSuchAlgorithmException 異常
*/
public KeyRSA(int in String address) throws NoSuchAlgorithmException FileNotFoundException IOException
{
kpg = KeyPairGenerator getInstance( RSA ); //創建 密匙對 生成器
kpg initialize(in); //指定密匙長度(取值範圍 ~ )
kp = kpg genKeyPair(); //生成 密匙對 其中包含著壹個公匙和壹個私匙的信息
public_key = kp getPublic(); //獲得公匙
private_key = kp getPrivate(); //獲得私匙
//保存公匙
public_file_out = new FileOutputStream(address + /public_key dat );
public_object_out = new ObjectOutputStream(public_file_out);
public_object_out writeObject(public_key);
//保存私匙
private_file_out = new FileOutputStream(address + /private_key dat );
private_object_out = new ObjectOutputStream(private_file_out);
private_object_out writeObject(private_key);
}
public static void main(String[] args) {
try {
System out println( 私匙和公匙保存到C盤下的文件中 );
new KeyRSA( c:/ );
}
catch (IOException ex) {
}
catch (NoSuchAlgorithmException ex) {
}
}
lishixinzhi/Article/program/Java/hx/201311/26592