Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
#1

Не работает XOR с русскими символами - Программирование Android

05.06.2016, 13:20. Просмотров 323. Ответов 8
Метки нет (Все метки)

Необходимо написать приложение XOR-шифрования на Android - написал.
Собственно само шифрование здесь. но одно "но" - с латинскими символами все шифрует, а русские - "не хочет". Андроидом начал заниматься только-только, не ругайте строго если глупые ошибки будут.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        num1 = EditText.getText().toString();
        num2 = EditText2.getText().toString();
        //result = num1 + num2;
        byte[] txt = num1.getBytes();
        byte[] key = num2.getBytes();
        String res = "";
        for (int i = 0; i < txt.length; i++) {
            res = res + (char)(txt[i] ^ key[i% key.length]);
            //res = res + (txt[i] ^ key[i]);
        }
        //return res;
        TextView.setText(res);
        num3 = TextView.getText().toString();
        byte[] res1 = num3.getBytes();
        String res2 = "";
        for (int i = 0; i < res1.length; i++) {
            res2 = res2 + (char)(res1[i] ^ key[i% key.length]);
            //res = res + (txt[i] ^ key[i]);
        }
        TextView2.setText(res2);
Добавлено через 4 часа 40 минут
похоже проблема в
Java
1
 byte[] txt = num1.getBytes();
латинские символы он воспринимает нормально - на выходе номера символов.
русские же на выходе что то вроде "-48-65-47-128". это буквы "пр".
решения пока не нашел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2016, 13:20     Не работает XOR с русскими символами
Посмотрите здесь:
Android Sqlite запрос со сравнением строки с последними 5ю символами
AJAX не работает с русскими символами JavaScript
PHP Не правильно работает регулярка с русскими символами
C# ASP.NET ASP и база данных не работает с русскими символами
Не работает удаление директории с русскими символами в пути BAT
Удалить второй элемент в списке - программа не работает с русскими символами C (СИ)
Delphi Работа с русскими символами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
05.06.2016, 21:53     Не работает XOR с русскими символами #2
В место массива байтов используй массив int или там есть другое решение проблемы (надо гуглить не помню)

Если не ошибаюсь то что-то типа
Java
1
byte[] txt = num1.getBytes() &  0xFF;
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
06.06.2016, 20:59  [ТС]     Не работает XOR с русскими символами #3
Спасибо, но к сожалению данный способ так же не работает. Гуглю третий день, пока тщетно. Буду рад еще помощи, вопрос остается открытым

Добавлено через 2 часа 18 минут
на просторах инета нашел такую конструкцию на java, как раз для этого. ничего особенного, просто добавление кодировки
Java
1
byte[] arr =str.getBytes("UTF-8");
Но у меня на Android studio он не пашет -
"unhandled exception: java.io.unsupportedencodingexception"
Не подскажете что это? И в правильную сторону ли я "копаю"?
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
06.06.2016, 21:16     Не работает XOR с русскими символами #4
Цитата Сообщение от opanasa Посмотреть сообщение
res = res + (char)(txt[i] ^ key[i% key.length]);
Нельзя так делать, т.к. ты кодировку всю портишь.
Получи зашифрованный массив байтов, а потом воспользуйся конвертором в base64.
Вот пример.
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
06.06.2016, 22:42  [ТС]     Не работает XOR с русскими символами #5
Спасибо за подсказку, попробую. Но сейчас я, похоже, и не могу получить зашифрованный массив байтов, с русскими символами при использовании byte[] txt = ...... он получается кривой(просто выводил этот массив, не XORил).
То есть как уже писал массив txt при использовании латинских символов получается последовательностью номеров символов. А с русскими символами - минусы.
Я могу ошибаться, конечно. Но в сети все что встречал, решалось указанием кодировки, у меня не сработало.

Добавлено через 1 час 6 минут
Дорогие форумчане, буду рад помощи, вопрос остается открытым.
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
07.06.2016, 09:47     Не работает XOR с русскими символами #6
Делай так и все будет норм..

Java
1
2
3
4
5
 
int[] res = int[txt.length];
for (int i = 0; i < txt.length; i++) {
            res[i] = (int)txt[i] ^ (int) key[i];
        }

res - будет массив интегер зашифрованный



Этот метод не проверял.. Возможно косяк.. Уже не помню как делал...
Java
1
2
3
4
5
 
StringBuilder str = new StringBuilder();
for (int i = 0; i < txt.length; i++) {
            str.append((char)((int)txt[i] ^ (int) key[i]));
        }
str.ToString(); - будет зашифрованная строка
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
07.06.2016, 18:57  [ТС]     Не работает XOR с русскими символами #7
Уважаемый ILNAR_93. Спасибо за совет. Оба варианта рабочие, сейчас проверил. Но, к сожалению, работает так же только с латиницей(по видимому они берут байтовый массив txt) на русских символах приложение крашится с ошибкой.
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
07.06.2016, 19:42     Не работает XOR с русскими символами #8
Цитата Сообщение от opanasa Посмотреть сообщение
Но, к сожалению, работает так же только с латиницей(по видимому они берут байтовый массив txt) на русских символах приложение крашится с ошибкой.
Я бы на твоём месте не надеялся, что у всех чёрный пояс по телепатии.

Вот пример XOR'а строк на java. Конверсию в Base64 на андроиде из предыдущего моего сообщения можно взять.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2016, 20:30     Не работает XOR с русскими символами
Еще ссылки по теме:
C++ regex с русскими символами
Проблемы с русскими символами C++
Проблемы с русскими символами C++ Builder
Ошибка с русскими символами MySQL
Файлы с русскими символами PHP БД

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
07.06.2016, 20:30  [ТС]     Не работает XOR с русскими символами #9
Боюсь грубо ответить, не в коей мере, но все же в первом посте есть первоначальный код, я по нему рассуждаю и говорю переменные и массивы. Пока вопрос не решен.
Yandex
Объявления
07.06.2016, 20:30     Не работает XOR с русскими символами
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru