I need A Sample Code in Java to
Encrypt The String in AES 256 (Rijndael) with padding in CBC mode : MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC
Then Encode the result in base 64.
using Encryption Key:-"f53c50e4ab798944a4debe137ec8ba677dbf44ebd37e373f785bf59a8c048c54".
* я создал этот пример, и он выдает неверный ключ ошибки, но я хочу использовать только указанный выше ключ
public class aes {
public static void main(String[] args) throws Exception {
System.out.println("started");
System.out.println(encrypt("hello"));
System.out.println("end");
}
public static String encrypt(String value) throws Exception{
byte[] keyBytes="f53c50e4ab798944a4debe137ec8ba677dbf44ebd37e373f785bf59a8c048c54".getBytes();
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] res=cipher.doFinal(value.getBytes());
String result=Base64.getEncoder().encodeToString(res);
return result;
}
}
MCRYPT_RIJNDAEL_256
, и AES-256 несовместимы! Rijndael имеет переменный размер блока, гдеMCRYPT_RIJNDAEL_256
(фактически из PHP) обозначает вариант с размером блока 256 бит, например здесь, раздел II. AES является подмножеством Rijndael и имеет фиксированный размер блока 128 бит (AES-256 обозначает AES с размером ключа 256 бит), здесь. Таким образом, оба алгоритма имеют разные размеры блоков и поэтому несовместимы. - person user 9014097   schedule 29.10.2019MCRYPT_RIJNDAEL_256
(размер блока 256 бит) различны, то есть можно использовать только один из них, либо AES-256, либоMCRYPT_RIJNDAEL_256
. Аналогом AES-256 являетсяMCRYPT_RIJNDAEL_128
. ДляMCRYPT_RIJNDAEL_256
нет аналога ни у одного из поставщиков Sun JCE, поэтому необходимо использовать сторонние библиотеки, такие как Bouncy Castle, здесь а>. - person user 9014097   schedule 29.10.2019keyBytes
, имеет длину 64 байта — это недопустимый размер ключа для AES. - person David Soroko   schedule 29.10.2019