Java暗号化とデジタル署名3公開鍵暗号化
最近Java暗号化とデジタル署名に関する内容に初歩的に接触しました。学習の過程は大体5段階に分けられます。
1)メッセージの要約
2)秘密鍵の暗号化
3)公開鍵の暗号化
4)デジタル署名
5)デジタル証明書
下のコードは第三部分です。公開鍵の暗号化です。
これに接触したばかりの友達のために少しの手間を省きたいです。
1)メッセージの要約
2)秘密鍵の暗号化
3)公開鍵の暗号化
4)デジタル署名
5)デジタル証明書
下のコードは第三部分です。公開鍵の暗号化です。
これに接触したばかりの友達のために少しの手間を省きたいです。
package security;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import javax.crypto.Cipher;
/**
* ,Cipher KeyPairGenerator( : )
*
* , , , , ,
* ( ); , , ( )。 ( 100
* 1000 ), RSA, Blowfish,Diffie-Helman
*/
public class PublicKey {
public static void main(String[] args) throws Exception {
String before = "asdf";
byte[] plainText = before.getBytes("UTF8");
// RSA KeyPairGenerator( : )
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
// 1024
keyGen.initialize(1024);
// KeyPairGenerator , : key !!
KeyPair key = keyGen.generateKeyPair();
// RSA Cipher ,
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
// System.out.println("
" + cipher.getProvider().getInfo());
System.out.println("
...");
//Cipher.ENCRYPT_MODE , key.getPublic()
cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
// ,
byte[] cipherText = cipher.doFinal(plainText);
// UTF8 String
String after1 = new String(cipherText, "UTF8");
System.out.println(" :"+after1);
//
System.out.println("
...");
//Cipher.DECRYPT_MODE , key.getPrivate()
cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
// ,
byte[] newPlainText = cipher.doFinal(cipherText);
String after2 = new String(newPlainText, "UTF8");
System.out.println(" :"+after2);
}
}