JAvaにおけるデータ暗号化2対称暗号化

3242 ワード

たいしょう暗号化
秘密鍵暗号化とも呼ばれます. 
    単一鍵暗号化システムの暗号化方法を採用し、同じ鍵を同時に情報の暗号化と復号化として使用することができ、この暗号化方法は対称暗号化と呼ばれ、単一鍵暗号化とも呼ばれる.
同じ鍵を暗号化および復号化するための暗号化アルゴリズムが必要である.対称暗号化は、その速度が速いため、通常、メッセージ送信者が大量のデータを暗号化する必要がある場合に使用される.対称暗号化は鍵暗号化とも呼ばれる.
対称とは,この暗号化手法を用いた双方の使用方式が同じ鍵で暗号化と復号化を行うことである.鍵は暗号化および復号化プロセスを制御する命令である.アルゴリズムは、暗号化と復号化の方法を規定するルールのセットです.
したがって、暗号化のセキュリティは、暗号化アルゴリズム自体に依存するだけでなく、鍵管理のセキュリティも重要である.暗号化と復号化は同じ鍵を使用するため,復号者に鍵を安全に渡す方法が解決しなければならない問題となっている.
一般的な対称暗号化としては、DES、IDEA、RC 2、RC 4、SKIPJACK、RC 5、AESアルゴリズムなどがある
      例えば、Aは1つの鍵で1つのファイルを暗号化し、Bはこのファイルを読み取る場合、Aと同じ鍵を必要とし、双方が1つの秘密鍵を共有する(web環境では、秘密鍵は伝達時にリスニングされやすい):秘密鍵で暗号化すると、まず1つの鍵が必要であり、javax.crypto.KeyGeneratorで1つの鍵(java.security.Key)を生成することができる.次に、対応するアルゴリズムを使用して暗号化を行う暗号化ツール(javax.crypto.Cipher)に渡されます.
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import java.security.Key;

public class PrivateTest {
    public static void main(String[] args) throws Exception {
        byte[] plainText = "test encryption".getBytes("UTF8");
        //   KeyGenerator    key
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(128);
        Key key = keyGen.generateKey();
        //          Cipher,ECB     ,PKCS5Padding     
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        System.out.println(" " + cipher.getProvider().getInfo());
        //       
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] cipherText = cipher.doFinal(plainText);
        System.out.println(new String(cipherText, "UTF8"));
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] newPlainText = cipher.doFinal(cipherText);
        System.out.println(new String(newPlainText, "UTF8"));
    }
}