Java/暗号化
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Javaで共通鍵暗号方式で暗号化を行うやりかたです。AES暗号化...
AES/ECB/ISO10126Padding
AES/ECB/PKCS5Padding
AES/CBC/ISO10126Padding
AES/CBC/PKCS5Padding
などがありますが以下のサンプルは AES/ECB/PKCS5Padding で...
** サンプルコード [#p4ca86cb]
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.security.AlgorithmParameters;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class EncryptSample {
public static void main(String[] args) throws Exception {
String key = "aaaaaaaaaabbbbbb"; // <-128bitのキー
byte[] keyBytes = key.getBytes(); // バイト列に変換
byte[] enBytes = EncryptSample.encryptECB("abcdefg ...
keyBytes); // "abcdefg hijklmn" という文字を共通...
// System.out.println(new String(enBytes));
byte[] deBytes = EncryptSample.decryptECB(enBytes, ...
// 共通鍵暗号化なので、同じカギで復号できる
System.out.println(new String(deBytes));
// 暗号化したデータをBase64してみる
byte[] bs = Base64.encodeBase64(enBytes, false);
System.out.println(new String(bs));
}
public static byte[] encryptECB(byte[] data, byte[] sec...
SecretKeySpec sKey = new SecretKeySpec(secret_key, ...
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5P...
cipher.init(Cipher.ENCRYPT_MODE, sKey);
return cipher.doFinal(data);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return new byte[0];
}
public static byte[] decryptECB(byte[] encData, byte[] ...
SecretKeySpec sKey = new SecretKeySpec(secret_key, ...
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5P...
cipher.init(Cipher.DECRYPT_MODE, sKey);
return cipher.doFinal(encData);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return new byte[0];
}
}
実行結果は以下の通り
abcdefg hijklmn
zhzF4Q/BcnoKCWruBNWcsg==
** 共通鍵をランダムに生成する [#w3b5839b]
上のように明示的に指定して共通鍵を作ることもできるし、ラ...
private static Key genKey() throws NoSuchAlgorithmExcept...
KeyGenerator generator = KeyGenerator.getInstance("AES...
SecureRandom random = SecureRandom.getInstance("SHA1PR...
generator.init(128, random);
Key key = generator.generateKey();
return key;
}
このキークラスから
byte[] keyBytes = key.getEncoded();
とやってキーのバイト列を取得することができます。このバイ...
Utils.byte2File(keyBytes, "hoge.key");
[[Utilsについてはこちら>Java/TIPS集#xf90100f]]
-[[共通鍵暗号化と復号>http://www1.u-netsurf.ne.jp/~ysk-ne...
-[[共通鍵の生成>http://www1.u-netsurf.ne.jp/~ysk-net/JSpe...
----
この記事は
#vote(おもしろかった[64],そうでもない[6])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Javaで共通鍵暗号方式で暗号化を行うやりかたです。AES暗号化...
AES/ECB/ISO10126Padding
AES/ECB/PKCS5Padding
AES/CBC/ISO10126Padding
AES/CBC/PKCS5Padding
などがありますが以下のサンプルは AES/ECB/PKCS5Padding で...
** サンプルコード [#p4ca86cb]
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.security.AlgorithmParameters;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class EncryptSample {
public static void main(String[] args) throws Exception {
String key = "aaaaaaaaaabbbbbb"; // <-128bitのキー
byte[] keyBytes = key.getBytes(); // バイト列に変換
byte[] enBytes = EncryptSample.encryptECB("abcdefg ...
keyBytes); // "abcdefg hijklmn" という文字を共通...
// System.out.println(new String(enBytes));
byte[] deBytes = EncryptSample.decryptECB(enBytes, ...
// 共通鍵暗号化なので、同じカギで復号できる
System.out.println(new String(deBytes));
// 暗号化したデータをBase64してみる
byte[] bs = Base64.encodeBase64(enBytes, false);
System.out.println(new String(bs));
}
public static byte[] encryptECB(byte[] data, byte[] sec...
SecretKeySpec sKey = new SecretKeySpec(secret_key, ...
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5P...
cipher.init(Cipher.ENCRYPT_MODE, sKey);
return cipher.doFinal(data);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return new byte[0];
}
public static byte[] decryptECB(byte[] encData, byte[] ...
SecretKeySpec sKey = new SecretKeySpec(secret_key, ...
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5P...
cipher.init(Cipher.DECRYPT_MODE, sKey);
return cipher.doFinal(encData);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return new byte[0];
}
}
実行結果は以下の通り
abcdefg hijklmn
zhzF4Q/BcnoKCWruBNWcsg==
** 共通鍵をランダムに生成する [#w3b5839b]
上のように明示的に指定して共通鍵を作ることもできるし、ラ...
private static Key genKey() throws NoSuchAlgorithmExcept...
KeyGenerator generator = KeyGenerator.getInstance("AES...
SecureRandom random = SecureRandom.getInstance("SHA1PR...
generator.init(128, random);
Key key = generator.generateKey();
return key;
}
このキークラスから
byte[] keyBytes = key.getEncoded();
とやってキーのバイト列を取得することができます。このバイ...
Utils.byte2File(keyBytes, "hoge.key");
[[Utilsについてはこちら>Java/TIPS集#xf90100f]]
-[[共通鍵暗号化と復号>http://www1.u-netsurf.ne.jp/~ysk-ne...
-[[共通鍵の生成>http://www1.u-netsurf.ne.jp/~ysk-net/JSpe...
----
この記事は
#vote(おもしろかった[64],そうでもない[6])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: