2017-02-15 16 views
0

Привет, я хочу шифровать строку, и эта работа хорошая, но когда я хочу использовать для utf_8 persian, это не работает. я использовать этот учебник:как utf-8 Encrypt/Decrypt в Android

http://www.androidsnippets.com/encrypt-decrypt-between-android-and-php.html

. и мой основной код вида деятельности является:

общественного класса MainActivity расширяет AppCompatActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    String value="سلام"; 

    try { 
     MCrypt mcrypt = new MCrypt(); 
     String encrypted = MCrypt.bytesToHex(mcrypt.encrypt(value)); 
     Toast.makeText(this, ""+encrypted, Toast.LENGTH_SHORT).show(); 
     String decrypted = new String(mcrypt.decrypt(encrypted)); 
     Toast.makeText(this, ""+decrypted, Toast.LENGTH_SHORT).show(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

я прочитал этот пост How to Encrypt And decrypt UTF-8 in JAVA or Android?, но не поможет мне спасибо за ваш помогает парням

+0

Если есть что-то более глупое, чем PHP + mcrypt, когда дело доходит до криптографии, то это фрагменты Android. Но вернемся к вопросу: можете ли вы проверить, соответствует ли результат 'mcrypt.decrypt (зашифрованный)' результат 'mcrypt.encrypt (value) 'в байтах? Должно быть что-то вроде Array.compare или вы можете сравнить массивы байтов, закодированные как hexadecimals. Обратите внимание, что использование CBC небезопасно, когда дело касается обмена клиент-сервер (т. Е. При использовании для безопасности транспорта). –

+0

@MaartenBodewes Не думаете ли вы, что может быть немного неверно сказать, что CBC не безопасен для безопасности на транспорте? Конечно, без MAC он может быть изменен, но CBC ** может быть безопасным при правильном использовании с другими криптографическими системами. –

+0

@ LukePark Я вижу только CBC здесь. Я не уверен в откровенных атаках оракула, но, конечно, без каких-либо дополнительных мер вы не должны ожидать целостности/аутентичности сообщений. Кроме того, статический IV (измените его!), Заполнение пробелами, что еще может пойти не так? –

ответ

0

Я думаю, эта конкретная ошибка находится в:

$encrypted = mcrypt_generic($td, $str); 

на сайте PHP; Я не вижу никакой конкретной кодировки символов, используемой для кодирования значения $str.