Java暗号化とデジタル署名3公開鍵暗号化


最近Java暗号化とデジタル署名に関する内容に初歩的に接触しました。学習の過程は大体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); } }