Я пытаюсь расшифровать файл *.ovpn который зашифрованный с помощью команды openssl enc -in infile.txt -out encrypted.dat -e -aes256 -k key_firebase
Файл скачиваеться по ссылке, но я скачиваю его с помощью следующего кода.
private String enctyptionKey = "63efc5743d9927c5993a05bdc5220b9eca8e38b5df829ca587a57f8ae423676b5fd79f641e375d0a0b3e2e03e7a079ea97cdah26bb2e15213daabb468760f425";
void main(){
URL url = new URL("https://encryptedfile.url");
InputStream inputStream = url.openStream())
byte[] b = new byte[1024];
ByteArrayOutputStream os = new ByteArrayOutputStream();
int c;
while ((c = inputStream.read(b)) != -1) {
os.write(b, 0, c);
}
String result = De.decryptMsg(os.toByteArray());
}
class De {
public static byte[] hex2byte(byte[] b) {
if ((b.length % 2) != 0)
throw new IllegalArgumentException("hello");
byte[] b2 = new byte[b.length / 2];
for (int n = 0; n < b.length; n += 2) {
String item = new String(b, n, 2);
b2[n / 2] = (byte) Integer.parseInt(item, 16);
}
return b2;
}
public static byte[] decryptMsg(String secretKeyString, byte[] encryptedMsg)
throws Exception {
// String algorithm = "AES/ECB/PKCS5Padding";
String algorithm = "AES";
// generate AES secret key from the user input secret key
Key key = new SecretKeySpec(secretKeyString.getBytes(), algorithm);
// get the cipher algorithm for AES
Cipher c = Cipher.getInstance(algorithm);
// specify the decryption mode
c.init(Cipher.DECRYPT_MODE, key);
// decrypt the message
return c.doFinal(encryptedMsg);
}
}
И я получаю ошибку. InvalidKeyException: Invalid AES key length: 128 bytes
Но данные нормально расшифровываеться командой
openssl enc -in encrypted.rtf -out decrypted.rtf -d -aes256 -k 63efc5743d9927c5993a05bdc5220b9eca8e38b5df829ca587a57f8ae423676b5fd79f641e375d0a0b3e2e03e7a079ea97cdah26bb2e15213daabb468760f425
Если кто может указать направление куда смотреть, буду благодарен.
Когда вы выполняете команду openssl enc -in infile.txt -out encrypted.dat -e -aes256 -k key_firebase
, key_firebase
- это не ключ, это текст, из которого openssl
генерирует ключ:
The password is used to derive the actual key which is used to encrypt your data.
Что бы посмотреть какой ключ был сгенерирован, вы можете добавить параметр -P
(вывести ключи, но не шифровать) или -p
(вывести ключи и зашифровать):
openssl enc -in infile.txt -out encrypted.dat -e -aes256 -k key_firebase -P
8 байт соли, которые использовались для генерации ключа, потом добавляются в начало зашифрованного файла.
Java выдает правильное исключение, для AES256 нужен ключ длиной 32 байта.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть 10000 копеек, которые нужно привести к виду 10000 рублей
Как обновить запрос ? Если я сделаю запрос paramsput("text", "Четверг"); А потом поменяю на params
При автоматизации отчета в excel, застрял с одной формулойФормула позволяет проставить номер недели исходя из даты
В чем разница между этими этими видами сериализациямиИ в Serialilzable я могу определить методы (private void writeObject(ObjectOutputStream in) и private void readObject(ObjectInputStream...