2016-12-01 5 views
1

Я разрабатываю приложение для Android, и я хочу сделать шифрование с помощью AES-128. Я использую секретный ключ и текст с шестнадцатеричным.Секретный ключ шифрования Android AES

Я использую этот сайт: http://testprotect.com/appendix/AEScalc для вычисления шифрования AES с ключом следующим: «c4dcc3c6ce0acaec4327b6098260b0be» и мой текст, чтобы зашифровать это: «6F4B1B252A5F0C3F2992E1A65E56E5B8» (шестнадцатеричное).

Таким образом, результат с этого сайта дает мне «859499d0802de8cc6ba4f208da648a8f», и это результат, который я хочу получить. http://hpics.li/d89105a

Я нахожу код в сети, но много использует семена для генерации случайного секретного ключа, и я хочу исправить секретный ключ. На самом деле я использую следующий код, я думаю, что это код, который мне нужен, но результат дает мне D/resultdebug: 72adc67b6d11e1c5fb89ddf5faeb0e030686b91f8bfaf6c41335f08955343f87 , и это не тот же результат, что и сайт, который я хочу.

String text16 = "6F4B1B252A5F0C3F2992E1A65E56E5B8"; 
    String secret16 = "c4dcc3c6ce0acaec4327b6098260b0be"; 

    SecretKeySpec sks = new SecretKeySpec(secret16.getBytes(),"AES"); 
    Cipher c = Cipher.getInstance("AES"); 

    c.init(Cipher.ENCRYPT_MODE, sks); 
    c.update(text16.getBytes()); 
    byte[] ciphertext = c.doFinal(); 
    Log.d("resultdebug",new String(Hex.encode(ciphertext), "ASCII")); 

Не могли бы вы рассказать мне, что случилось, спасибо.

+0

Какова ценность 'ENCRYPT_MODE'? – zaph

ответ

0

Вы не конвертируете шестнадцатеричный код в двоичный код, вы получаете двоичный код символов, а не значение, которое кодируется в шестнадцатеричном формате.

0

Благодаря zaph, она решена моя проблема

Я добавил эти две линии на мой код:

byte[] text = stringhextobyte(text16); 
    byte[] secret = stringhextobyte(secret16); 

и функция stringhextobyte позволяет мне преобразовать мой шестнадцатеричной строки в массив байт, и я получаю результат необходимо.

Смежные вопросы