Вы говорите о шифровании и дешифровании, но вы показываете код, который просто превращает числовые байты (такие как 0x4F
) в строки (такие как "4F"
) - что может иметь отношение к вашей передаче данных (если вы не можете передать двоичный формат), но совершенно не связаны с шифрованием / дешифрованием.
Поскольку код Android содержит только один анализ целочисленных значений, изучили ли вы вводимые данные? str.substring(i*2,i*2+2)
, по-видимому, содержит данные, отличные от [0-9A-F], когда возникает исключение. Вам следует начать с изучения полученной строки и сравнения ее с отправленной, чтобы убедиться, что они согласны и содержат только шестнадцатеричные символы.
Edit - передача строки "f46d86e65fe31ed46920b20255dd8ea6" через функцию hexToBytes () работает безупречно. Ваш вклад, вероятно, не то, что вы думаете.