Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

05.06.2016, 13:20. Просмотров 347. Ответов 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". это буквы "пр".
решения пока не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2016, 13:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает XOR с русскими символами (Программирование Android):

AJAX не работает с русскими символами - JavaScript
Решил изучить аякс, почитал книжку, набрал пример. Не работает с русскими символами почему то, вроде кодировку поменял, может гет запросом...

Не правильно работает регулярка с русскими символами - PHP
Приветствую. В интернете большинство людей предлагают такую регулярку для разрешения только русских символов. Попробовав ее...

ASP и база данных не работает с русскими символами - C# ASP.NET
Почему моя база на Access (да и на Paradox) возврящает за полей заполненных по русски только знаки вопроса? Подскажите плз!

Не работает удаление директории с русскими символами в пути - CMD/BAT
пишу батник rmdir c:\пользователи\администратор\angl1\angl2\endoftheroad \\\\\\\\\\\\\\ система не может найти указанный путь. ...

Удалить второй элемент в списке - программа не работает с русскими символами - C (СИ)
Скинул в блокноте шрифты не распознает русские дома. Еще не подскажете какой шрифт установить.

Файлы с русскими символами - PHP БД
В папке лежат файлы, содержащие в названии русские символы. Сформированные ссылки не работают. Кто что подскажет? &lt;? $dir =...

8
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,749
Записей в блоге: 3
05.06.2016, 21:53 #2
В место массива байтов используй массив int или там есть другое решение проблемы (надо гуглить не помню)

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

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

Добавлено через 1 час 6 минут
Дорогие форумчане, буду рад помощи, вопрос остается открытым.
0
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,749
Записей в блоге: 3
07.06.2016, 09:47 #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(); - будет зашифрованная строка
0
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
07.06.2016, 18:57  [ТС] #7
Уважаемый ILNAR_93. Спасибо за совет. Оба варианта рабочие, сейчас проверил. Но, к сожалению, работает так же только с латиницей(по видимому они берут байтовый массив txt) на русских символах приложение крашится с ошибкой.
0
EVP
390 / 246 / 43
Регистрация: 14.12.2010
Сообщений: 472
07.06.2016, 19:42 #8
Цитата Сообщение от opanasa Посмотреть сообщение
Но, к сожалению, работает так же только с латиницей(по видимому они берут байтовый массив txt) на русских символах приложение крашится с ошибкой.
Я бы на твоём месте не надеялся, что у всех чёрный пояс по телепатии.

Вот пример XOR'а строк на java. Конверсию в Base64 на андроиде из предыдущего моего сообщения можно взять.
0
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
07.06.2016, 20:30  [ТС] #9
Боюсь грубо ответить, не в коей мере, но все же в первом посте есть первоначальный код, я по нему рассуждаю и говорю переменные и массивы. Пока вопрос не решен.
0
07.06.2016, 20:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2016, 20:30
Привет! Вот еще темы с ответами:

regex с русскими символами - C++
Привет всем! что надо сделать чтобы работала регулярное выражение с русскими буквами ? регулярные выражение пользуюсь из boost...использую...

Работа с русскими символами - Delphi
Здравствуйте . У меня такая проблема : написал программу, которая, заменят в вводимой строке прописные русские символы на строчные. При...

Проблемы с русскими символами - C++ Builder
Здравствуйте. Столкнулся с такой ситуацией, есть Firebird 2.5 UTF-8, С++ Builder XE3 тоже юникод. Но при записи в БД кириллицы возникают...

Ctype_lower с русскими символами - PHP
Мне нужно проверить находится ли какой-нибудь текст в нижнем регистре. С английским текстом работает, а вот с русским нет. Как сделать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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