Rijndael Поддержка шифрования Java

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;

    }
}

person Ashish    schedule 29.10.2019    source источник
comment
Пожалуйста, опубликуйте код, который вы пробовали.   -  person Cosmin Staicu    schedule 29.10.2019
comment
Вариант Rijndael, указанный с помощью 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.2019
comment
Спасибо за твой ответ. Это мне очень помогло. Возможно ли это сделать (AES 256 (Rijndael) с дополнением в режиме CBC: MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC) в java?   -  person Ashish    schedule 29.10.2019
comment
Как я уже сказал, нет! Опять же, AES-256 (размер блока 128 бит) и MCRYPT_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.2019
comment
Ага! я пробовал с Bouncy Castle, но получаю ту же ошибку, что и неверный 64-байтовый ключ. И при предоставлении 32-байтового ключа он работает. для этого у меня есть ключ =f53c50e4ab798944a4debe137ec8ba677dbf44ebd37e373f785bf59a8c048c54. для шифрования... и требование в документе находится в AES 256 (Rijndael) с дополнением в режиме CBC: MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC.. поэтому мне будет очень полезно, если вы можете предоставить пример кода в java для реализации этого требования как я не могу его найти   -  person Ashish    schedule 29.10.2019
comment
можете ли вы поделиться какой-либо ссылкой, которая может дать объяснение, связанное с Bouncy Castle   -  person Ashish    schedule 29.10.2019
comment
Причина, по которой вы получаете сообщение об ошибке, заключается в том, что ключ, который вы генерируете keyBytes, имеет длину 64 байта — это недопустимый размер ключа для AES.   -  person David Soroko    schedule 29.10.2019
comment
Я уже дал вам эту ссылку. Здесь вы можете найти конкретный пример. Больше найдете в сети.   -  person user 9014097    schedule 29.10.2019