2014-12-16 4 views
2

Я работаю над шифрованием и расшифровкой AES в android. У меня есть аудиофайл, который зашифрован с использованием AES/CBC. У меня есть ключ и IV (вектор инициализации).Где указать значение ключа и IV при шифровании/расшифровке AES в Android?

Я прочитал несколько ссылок. От this

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 

Класс SecretkeySpec используется. Где я должен использовать свои ключевые и IV значения?

И мне нужно дешифровать только первые 256 байтов данных. Как я могу это достичь?

ответ

0

В фрагменте кода, raw является ключом (в виде массива байтов):

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
//           ^^^ this is your key 

Конечно, если у вас есть ключ в виде шестнадцатеричной строки, вам необходимо convert it to bytes.

При шифровании вы можете указать либо самостоятельно, либо создать случайный случай. Если вы хотите указать себя, используйте:

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // adjust padding 
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(...)); 

, если вы хотите использовать автоматический один, не забудьте записать, который один был выбран по телефону

cipher.getIV(); 

Для дешифровки необходимо указать IV и вы делаете это с помощью IvParameterSpec, как и при шифровании.

И мне нужно дешифровать только первые 256 байтов данных. Как я могу это достичь?

Рассмотрите возможность использования CipherInputStream и прочтите только 256 байтов.