Расшифровка с использованием AES 256 со значениями ключа и соли.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Расшифровка с использованием AES 256 со значениями ключа и соли.

Сообщение Anonymous »

Я пытаюсь реализовать логику дешифрования и знаю, что зашифрованная строка была создана с использованием:
Key: 8d6ea4d3e6f8c4f8641516baa5e42b85
transformation: AES/CBC/ISO10126PADDING
salt: 1c4dd21d7ba43bdd
iterations: 0
Encrypted string: JO0blEp+nEl5nNhgUqoZRJNecogM1XHIXUCatPOJycs=

Здесь приведены образцы ключа и соли. Главное — показать формат, в котором у меня есть эти данные. Методы шифрования основаны на поставщике JCE по умолчанию для JDK (SunJCE).
Теперь, основываясь на приведенной выше информации, я пытаюсь построить логику дешифрования. Немного сомнений:
  • Поскольку используется AES-256, может ли он иметь 128-битные значения ключа и 64-битные значения соли? или я неправильно интерпретирую информацию.
  • видя зашифрованную строку, похоже, что это значение в кодировке Base64, и нам нужно декодировать его во время расшифровки. Правильно ли я понимаю?
  • Ниже приведена логика расшифровки, которую я пишу, которая выдает ошибку: "javax.crypto.BadPaddingException: Учитывая, что последний блок не дополняется должным образом», когда я вызываю функцию doFinal().
    и меня поразило это за последние три дня:( . Можете ли вы указать или дать мне точный код, который будет использоваться здесь для расшифровки с наличием информации:
public static void main(String[] args) throws Exception {
String encstring = "JO0blEp+nEl5nNhgUqoZRJNecogM1XHIXUCatPOJycs=";
String salt1 = "1c4dd21d7ba43bdd";
String keyStr = "8d6ea4d3e6f8c4f8641516baa5e42b85";

byte[] keyBytes = Hex.decodeHex(keyStr.toCharArray());

SecretKey secret2 = new SecretKeySpec(keyBytes, "AES");

byte[] iv = new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
AlgorithmParameterSpec params = new IvParameterSpec(iv);

Cipher cipher2 = Cipher.getInstance("AES/CBC/ISO10126PADDING", "SunJCE");

cipher2.init(Cipher.DECRYPT_MODE, secret2, params);
byte[] encryptedString = Base64.decodeBase64(encstring.getBytes());
byte[] plaintext1 = cipher2.doFinal(encryptedString);

System.out.println(new String(plaintext));
}
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»