Key: 8d6ea4d3e6f8c4f8641516baa5e42b85
transformation: AES/CBC/ISO10126PADDING
salt: 1c4dd21d7ba43bdd
iterations: 0
Encrypted string: JO0blEp+nEl5nNhgUqoZRJNecogM1XHIXUCatPOJycs=
Здесь приведены образцы ключа и соли. Главное — показать формат, в котором у меня есть эти данные. Методы шифрования основаны на поставщике JCE по умолчанию для JDK (SunJCE).
Теперь, основываясь на приведенной выше информации, я пытаюсь построить логику дешифрования. Немного сомнений:
- Поскольку используется AES-265, может ли он иметь 128-битный ключ и 64-битные значения соли? или я неправильно интерпретирую информацию.
- видя зашифрованную строку, похоже, что это значение в кодировке Base64, и нам нужно декодировать его во время расшифровки. Правильно ли я понимаю?
- Ниже приведена логика расшифровки, которую я пишу, которая выдает ошибку: "javax.crypto.BadPaddingException: Учитывая, что последний блок не дополняется должным образом», когда я вызываю функцию doFinal().
и я поражен здесь за последние три дня:( . Не могли бы вы указать или дать мне точный код, который будет использоваться здесь для расшифровки с информацией:
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));
}
Подробнее здесь: https://stackoverflow.com/questions/205 ... alt-values