Шифрование байта [ ] с использованием ключа сеанса AES 256
У меня есть ключ сеанса, который меняется с каждым выполнением программы. Я должен зашифровать байт [ ] с помощью этого сеансового ключа (AES 256), так как это сделать.
Я генерирую свой ключ от
Key key;
SecureRandom rand = new SecureRandom();
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(rand);
generator.init(256);
key = generator.generateKey();
И используя это для шифрования байтового массива
public static byte[] Encrypt(byte[] a,Key skey) throws Exception {
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skey);
byte[] encrypted =cipher.doFinal(a);
cipher.init(Cipher.DECRYPT_MODE, skey);
byte[] original = cipher.doFinal(encrypted);
String originalString = new String(original);
return encrypted;
}
Но каждый раз, когда я запускаю программу, она показывает и ошибку
Exception in thread "main" java.security.InvalidKeyException: Illegal
key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)
at javax.crypto.Cipher.implInit(Cipher.java:801)
at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
at javax.crypto.Cipher.init(Cipher.java:1249)
at javax.crypto.Cipher.init(Cipher.java:1186)
at com.esign.verify.DocHash.AES.Encrypt(AES.java:52)
at com.esign.verify.DocHash.DocHash.main(DocHash.java:264)