リファレンストップへ Java | 暗号化・複合化使用した環境 JDK 6 Update 11 秘密鍵を使用した暗号化・複合化のサンプルです。下記は、Blowfishアルゴリズムを使用した暗号化のサンプルです。 暗号結果はbyte配列で取得されますので、その後扱いやすいように、Base64エンコードを行っています。 import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import com.sun.org.apache.xml.internal.security.utils.Base64; public class Main { public static void main(String[] args) throws Exception { // 暗号化する文字列 String text = "あいうえお"; // 暗号化の秘密鍵 String key = "abcdefg"; // 使用する暗号化アルゴリズム String algorithm = "BLOWFISH"; // 暗号化 SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), algorithm); Cipher cipher = Cipher.getInstance(algorithm); cipher.init(Cipher.ENCRYPT_MODE, sksSpec); byte[] encrypted = cipher.doFinal(text.getBytes()); // Base64エンコード String encryptedText = Base64.encode(encrypted); System.out.println(encryptedText); } } 結果は以下のようになります。 eZhCuSzSt/+FV82ucBzdSQ== 暗号化された文字列の複合化は以下のようにして行います。 import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import com.sun.org.apache.xml.internal.security.utils.Base64; public class Main { public static void main(String[] args) throws Exception { // 暗号化する文字列 String text = "eZhCuSzSt/+FV82ucBzdSQ=="; // 暗号化の秘密鍵 String key = "abcdefg"; // 使用する暗号化アルゴリズム String algorithm = "BLOWFISH"; // Base64エンコードされた文字列をデコード byte[] encrypted = Base64.decode(text); // 複合化 SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), algorithm); Cipher cipher = Cipher.getInstance(algorithm); cipher.init(Cipher.DECRYPT_MODE, sksSpec); byte[] decrypted = cipher.doFinal(encrypted); String decryptedText = new String(decrypted); System.out.println(decryptedText); } } 結果は以下のようになります。 あいうえお SecretKeySpecのコンストラクタや、Cipher.getInstanceの引数に使用するアルゴリズム文字列は、"BLOWFISH"以外にも、"DES"や"AES"などのアルゴリズムも指定可能です。 一般的な暗号化アルゴリズムはだいたい用意されています。 以下のようにすると、環境で使用可能なアルゴリズムの一覧が取得できます。 import java.security.Security; 実行結果は以下のようになります。(環境やバージョンによって結果は異なる可能性があります。)import java.util.Set; public class Main { public static void main(String[] args) throws Exception { Set<String> names = Security.getAlgorithms("Cipher"); for (String name : names) { System.out.println(name); } } } BLOWFISH ARCFOUR PBEWITHMD5ANDDES RC2 RSA PBEWITHMD5ANDTRIPLEDES PBEWITHSHA1ANDDESEDE DESEDE AESWRAP AES DES DESEDEWRAP RSA/ECB/PKCS1PADDING PBEWITHSHA1ANDRC2_40 |
|