2013-08-10 2 views
1

Я использую рамки java для создания небольшого проекта. В рамке входа я получаю имя пользователя и пароль от пользователя. После проверки действительности я должен передать это имя пользователя и пароль другому конструктору фрейма (называемому UserFrame). Я передаю как строку и кажется небезопасным. Есть ли хороший способ для передачи пароля из одного кадра в другой в java?Передача пароля от входа

String user=userField.getText(); 
String pwd= passField.getText(); 
if (user.equals("username") && pwd.equals("password")) 
     Home x= new Home(user,pwd); 
+1

Вы используете качели? вы должны предоставить код, демонстрирующий проблему. – nachokk

+0

добавлен фрагмент кода – user2670866

+0

Опять же, *** никогда не используйте 'getText()' с JPasswordFields. API скажет вам, что он устарел. –

ответ

1

Обратите внимание, что JPasswordField#getPassword() возвращает char[], и чтобы вы могли обрабатывать пароль, как это дается вам (при условии, что вы используете JPasswordField): как массив полукокса. Либо это, либо хэш это как-то и передать хэш-код.


Редактировать
Вы состояние:

Да я использую JPasswordField. Однако я использовал getText() для простоты, поскольку возвращает String. Является ли массив символов гарантией дополнительной безопасности, чем строка при передаче из одного кадра в другой?

Не используйте getText() по той причине, что вы просите ваш вопрос: вы не должны обрабатывать пароли Струны на всех, так как это повышает удобство их обнаружения. Посмотрите на API для класса JPasswordField, и вы увидите, что getText() устарел по этой же причине. Как правило, вы не должны использовать устаревшие методы.


Edit 2 Вы состояние:

Ok. Теперь я это понимаю. Но как можно передавать пароль из одного кадра в другой? Предоставляет ли безопасность char [] гарантию?

Насколько я знаю, ничего не гарантирует безопасности, но обработка пароля как массив символов ведет к улучшению безопасности. Используйте параметр конструктора char [] или метод setter, который принимает параметр char [].

+0

Да, я использую JPasswordField. Однако я использовал getText() для простоты, поскольку возвращает String. Является ли массив символов гарантией дополнительной безопасности, чем строка при передаче из одного кадра в другой? – user2670866

+0

@ user2670866: См. Изменение в моем ответе выше. –

+0

Хорошо. Теперь я это понимаю. Но как можно передавать пароль из одного кадра в другой? Проходит ли обязательная гарантия? – user2670866

0

Вы можете использовать getPassword() метод avaialable. Но этот метод возвращает тип char. Вы можете преобразовать его в String.

char a[]= jPasswordField1.getPassword(); 
String pswd = new String (a); 

Или просто,

String pswd= new String (jPasswordField1.getPassword()); 

Передайте идентификатор, PSWD к другому конструктору кадра, как

new JFrame2(id,pswd); 
+0

Вместо этого я использовал метод getText(). однако мой корешок - это передача строки из одного кадра в другой? Использует ли java какие-либо методы автоматического кодирования? или любой объект, например «пароль»? – user2670866

0

Я работаю над чем-то вроде этого. Вероятно, вы не хотите передавать незашифрованные строки, и писать класс шифрования не слишком обременительный. Посмотрите эту страницу для руководства по шифрованию: http://www.javacodegeeks.com/2012/05/secure-password-storage-donts-dos-and.html

Я бы зашифровал текст при записи, а затем передал полученный массив байтов.

1

passField.getText() устарел, поэтому я бы не рекомендовал его использовать. Вместо этого попробуйте использовать passField.getPassword(), например:

String pwd= new String(passField.getPassword()); 
Смежные вопросы