Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Проблемы с шифрованием после JTextField.getText()


Автор: Pavel12 8.5.2013, 16:36
Всем доброго времени суток!
Работаю с LDAP сервером, в который необходимо поместить зашифрованный(AES) атрибут. Разрабатывал  и тестировал код отдельно от GUI - всё прекрасно получалось, шифровалось(получались нечитаемые символы), добавлялось(как String), а в последствии читалось и расшифровывалось:

Код

//Атрибут 
String name = "ТестИмя2";

//шифрование атрибута
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedDataName = c.doFinal(name.getBytes("UTF-16"));
String crname = new String(encryptedDataName);

// ввод зашифрованных атрибутов добавляемого пользователя  
Attribute gn = new BasicAttribute("gn", crname);

//и т.д.


В GUI всё аналогично (ключ шифрования тот же), за исключением самого атрибута, который, естественно, прописывается не в коде, а в JTextField. Однако, после считывания атрибута (JTextField.getText())
и его шифрования программа выводила вместо нечитаемых символов сплошные маленькие пустые квадратики + пару других символов. Всё это уже не хотело записываться на сервер со словами про ошибку синтаксиса. Так как код везде идентичен, скорее всего это из-за каких-то особенностей считывания с текстового поля (кодировка?). Как мне всё это поправить?

Автор: Pavel12 9.5.2013, 14:41
Поэксперементировал и вот к чему пришёл: тестировал я этот код в eclipse(4.2.0) и при шифровании "ТестИмя2" получалось вот такое: ЅєЌ/3·,№Uі)eдд-YkSz=ptјн+Сџ®dw. Эта строка без проблем добавлялась в качестве атрибута на сервер.
А вот шифрование того же "ТестИмя2" тем же ключом в netbeans(7.0.1) получалось другое: ���/3�,�U�)e��-YkSz=pt��+���dw. Т.е. некоторые символы совпадают, но вот эти ромбики (в консоли нетбинса они выглядят как квадратики) как раз на сервер и не пишутся.
Вопрос: могу ли я без потерь перенести свой GUI в эклипс либо в нетбинс более свежей версии(при условии, что новая версия будет выдавать такую же зашифрованную строку, как эклипс). Или там используются другие библиотеки (не swing)?

Автор: Mirkes 11.5.2013, 10:02
По моему стоит разобраться с кодировкой, а не менять IDE. Я в этом не силен, но скорее всего в ваших IDE стоит расная кодовая страница исходников. Проверьте кодовое представление своей строки в обоих IDE.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)