0
新しいJDK 9リリースを使用してこのクラスを作成しました。Java - AES 256はJDK 7とJDK 9では動作しますが、JDK 8では動作しません
public class Encrypters {
public static byte[] AESEncrypt(Key key, byte[] data) throws GeneralSecurityException {
Cipher cipher=Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData=cipher.doFinal(data);
return encryptedData;
}
}
私はまた、これは文字列を暗号化するために、使用され
public class Hashes {
public static byte[] sha256Hash(byte[] input) {
return hash(input, "SHA-256");
}
private static byte[] hash(byte[] input, String algorithm) {
MessageDigest md=null;
try {
md=MessageDigest.getInstance(algorithm);
}
catch (NoSuchAlgorithmException e) {}
return md.digest(input);
}
}
このヘルパークラスを書いた:
String password=...;
String data=...;
Key key=new SecretKeySpec(Hashes.sha256Hash(password.getBytes(), "AES"));
Encrypters.AESEncrypt(key, data.getBytes());
このコードは、JDK 9およびJDK 7の両方で動作しますが、ないとJDK 8 JDK 8を実行しようとすると、このエラーが発生します。
java.security.InvalidKeyException: Illegal key size or default parameters
このエラーはなぜ発生しますか? AES-256はJava 8ではサポートされていませんか?
関連性はないかもしれませんが、暗号のすべての側面を常に定義する必要があります。 「AES」だけではありません。また、ECBモードを使用しないでください。代わりに "AES/CBC/PKCS5Padding"を使用してください。 –