![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Здравствуйте! делаю шифрования на Java. В функцию приходит строка, я ее перегоняю в массив байт и делю на блоки (по 8 элементов). Затем к каждому блоку применю XOR с ключем (побайтно). После чего набор байт полученный после шифрования превращается в строку. Если строку перегнать в массив байт, мы получим что там элементов стало в разы больше ...
Вот пример:
Как правильно переводить строки в массив байт ? что бы сохранялся размер в байтовом виде ? Просто из за этого я потом не могу назад расшифровать текст, так как на блоки уже не поделишь. |
|||
|
||||
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
В разы - это в 2?
Попробуйте вместо Charset.defaultCharset() в new String(bResult, Charset.defaultCharset()); использовать "UTF-8" |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Нет, разница не в 2 раза ... всегда по разному.
Попробовал с UTF-8 та же проблема ... Может есть какие то специальные хелпер классы для конвертации строк в байты и назад ? |
|||
|
||||
aleksandy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 260 Регистрация: 17.12.2006 Репутация: 4 Всего: 5 |
||||
|
||||
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
|
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Stolzen, твой пример работает. Но я по прежнему не вижу разницы между моим кодом и твоим ...
aleksandy, стаьтю прочитал, спасибо. Но так и не понял что я не так делаю ... я везде использую одну кодировку, и следовательно все должно работать ... Изменил кодировку с UTF-8 на windows-1251 и кол-во символов стало совпадать до кодирования и после, но русские буквы он маскирует квадратами (( Как можно явно указать кодировку при создании String ? |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
Например, почитать документацию: http://download.oracle.com/javase/6/docs/a...ang/String.html, String(byte[], String) Неожиданный ход, правда? Это сообщение отредактировал(а) Skipy - 5.10.2011, 11:43 |
|||
|
||||
4epT |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
В документации смотрел ... просто ожидал что то вроде:
Сделал вот так:
Вроде заработало все! Всем спасибо! |
||||||
|
|||||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Поэтому зашифрованные байты переводить в строку нельзя, нужно записывать в файл как массив байтов, или каждый байт превращать в две шестнадцатиричные цифры. |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
А какое может быть исключение ?
Если везде использовать одну и ту же кодировку, есть ли возможность поймать исключение ? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
В windows-1251 есть неиспользуемые коды - если они попадутся получишь исключенте
В utf-8 символы с кодами > 127 кодируются несколькими байтами, если есть только первый байт, а нет второго или наоборот - тоже получишь исключение |
|||
|
||||
math64 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Я ошибся - не бросает исключения, а вставляет '?' на место символов, которые не смог перекодировать
Вывод:
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |