導入javax . crypto . *;
/**
*此示例解釋了如何使用DES私鑰加密算法進行加密和解密。
*
* @作者德文
* @版本1.0 04/03/10
*/
公共類SingleKeyExample {
公共靜態void main(String[] args) {
嘗試{
String algorithm = " DES//定義加密算法,可以是DES,DES,DESede,Blowfish。
String message = "Hello World。這是要加密的信息”;
//生成DES密鑰。
key generator key generator = key generator . getinstance(算法);
key generator . init(56);//選擇DES算法,密鑰長度必須是56位。
key key = key generator . generate key();//生成密鑰
//生成壹個密碼對象
cipher cipher = cipher . getinstance(" DES ");
//用密鑰加密明文,生成密文。
cipher.init(密碼。ENCRYPT_MODE,key);//操作模式是加密(cipher。encrypt _ mode),而密鑰就是密鑰。
byte[]密文= cipher . do final(message . getbytes());//獲取加密的字節數組
System.out.println("加密信息:"+新字符串(密文));
//用密鑰加密明文,生成密碼字節。
cipher.init(密碼。DECRYPT_MODE,key);//操作方式是解密,密鑰是密鑰。
byte[]source text = cipher . do final(密文);//獲取解密的字節數組
System.out.println("解密信息:"+新字符串(source text));
} catch (Exception ex) {
ex . printstacktrace();
}
}
}
/**
* @作者德文
*/
導入Java . security . *;
導入Java . security . spec . *;
導入javax . crypto . *;
公共類PairKeyExample {
公共靜態void main(String argv[]) {
嘗試{
String algorithm = " RSA//定義加密算法,可以是DES,DES,DESede,Blowfish。
String message = "妳好,張三,我是李四";
//生成張三的密鑰對。
密鑰對生成器密鑰生成器張=
KeyPairGenerator.getInstance(算法);//指定要使用的算法。
keygenerator Zhang . initialize(1024);//指定的密鑰長度是1024位。
key pair key pair Zhang = keygeneratorzhang . generatekeypair();//生成密鑰對
System.out.println("生成張三的公鑰對");
//張三生成壹個publicKeyZhang發送給李四,公鑰的數組字節在這裏發送。
byte[]public keyzhangencode = key pair Zhang . get public()。get encoded();
//通過網絡或磁盤將公鑰代碼發送給李四。
//李四接收張三編碼後的公鑰並解碼。
key factory keyFacoryLi = key factory . getinstance(算法);//獲取KeyFactory對象。
X509EncodedKeySpec x509KeySpec =
new x 509 encodedkeyspec(publicKeyZhangEncode);//公鑰由X.509編碼
public key public key Zhang = keyfacoryli . generate public(x509 key spec);//將公鑰的KeySpec對象轉換為公鑰。
System.out.println("李四成功解碼得到張三的公鑰");
//李四用張三的公鑰加密信息,發送給李四。
cipher cipher = cipher . getinstance(" RSA/ECB/pkcs 1 padding ");//獲取密碼對象
cipher.init(密碼。ENCRYPT_MODE,public key Zhang);//用張三的公鑰初始化Cipher對象。
byte[]cipher message = cipher . do final(message . getbytes());//獲取加密信息
System.out.println("加密消息:"+新字符串(cipher message));
System.out.println("加密後發給李四...");
//張三用自己的私鑰解密從李四那裏收到的信息。
cipher.init(密碼。DECRYPT_MODE,key pair Zhang . get private());//張三用自己的私鑰初始化密碼對象。
byte[]original message = cipher . do final(cipher message);//獲取解密的信息
System.out.println("張三收到消息解密為"+new String(original message));
} catch (Exception ex) {
ex . printstacktrace();
}
}
}