длина зашифрованного текста в AES/CBC алгоритме

166
16 ноября 2018, 09:20

Подскажите, как я могу получить длину зашифрованного ключа 192 символа? потому как я получаю 416..

private static byte[] iv = "0000000000000000".getBytes();
public static String encrypt(String content, String key) throws Exception {
    byte[] input = content.getBytes("utf-8");
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    byte[] thedigest = md.digest(key.getBytes("utf-8"));
    SecretKeySpec skc = new SecretKeySpec(thedigest, "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, skc, new IvParameterSpec(iv));
    byte[] cipherText = new byte[cipher.getOutputSize(input.length)];
    int ctLength = cipher.update(input, 0, input.length, cipherText, 0);
    ctLength += cipher.doFinal(cipherText, ctLength);
    return DatatypeConverter.printHexBinary (cipherText);
}
Answer 1

Вот что у вас происходит.

  1. Алгоритм AES-256 (то есть длина блока 16 байт)
  2. Применяется алгоритм выравнивания длины блоков PKCS5, который прибавляет к исходному тексту длиной 192 байта еще 16 байт (вернее округляет вверх до кратных 16 байтам, иначе CBC не будет работать)
  3. Итого получается у вас 208 байт, который шифруются в те же самые 208 байт
  4. Далее эти 208 байт вы переводите в HEX, который представляет 1 байт 2-мя байтами в ASCII - итого и получаем 416 байт

Длина ключа не играет роли...

READ ALSO
Как создать многомерный массив?

Как создать многомерный массив?

Никак не могу создать многомерный массив с типом StringВот фрагмент массива из Python, который я хочу реализовать в Java:

150
AlarmManager.setRepeating Аттрибуты

AlarmManager.setRepeating Аттрибуты

Метод, который повторяет какое-то действие в указанная в аттрибуте intervalMillis времяНе могу просто понять зачем нужен triggerAtMillis?

203
SQLite не сохраняеться в БД

SQLite не сохраняеться в БД

столкнулся с проблемойДанный код выполняется в сервисе, происходит подключение к сокет серверу, если к нам приходит сообщение, оно должно...

172
Как добавить несколько URL prepared

Как добавить несколько URL prepared

Коллеги, пытаюсь добавить еще одну ссылку на радио с инета, сейчас есть кнопка которая воспроизводит аудио-поток, хочу добавить еще одну кнопку...

157