Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Шифрование паролей


Автор: mastanik 21.6.2006, 13:40
подскажите, пожалуйста, как мржно стандартными средствами зашифровать пароль для последующего хранения в БД?

Спасибо 

Автор: Bulat 21.6.2006, 13:42
Хм! Мне кажется этот вопрос относится больше к БД чем к яве. smile  

Автор: mastanik 21.6.2006, 13:46
отчего же? 

Автор: Bulat 21.6.2006, 14:01
Самому не приходилось еще с этим сталкиваться, поэтому не могу описать подробно, дабы не обмануть и не ввести в заблуждение. Те кто с Ораклом работают, тебе лучше объянят.

А так держи ссылку, может то что надо:
http://forum.vingrad.ru/index.php?showtopic=91886 smile

 

Автор: batigoal 21.6.2006, 14:01
Попробуй вот эти ссылки посмотреть:
http://java.sun.com/products/jce/
http://www.devarticles.com/c/a/Java/Password-Encryption-Rationale-and-Java-Example/
http://www.informit.com/guides/content.asp?g=java&seqNum=29&rl=1
 

Автор: Lerm 21.6.2006, 14:02
Можно, смотри в сторону Java Cryptography Extension. Вот ссылка на Guide: http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#SimpleEncrEx 

Автор: mastanik 21.6.2006, 14:05
ага, благодарю. 

Автор: mastanik 21.6.2006, 18:04
а как в Оракле byte[] содержать, кто-нибудь в курсе? 

Автор: mastanik 21.6.2006, 18:27
похоже BLOB то, что надо 

Автор: mastanik 21.6.2006, 19:04
Не, все-таки RAW, только вот хэш MD5 из примера туда не хочет сохраняться... 

Автор: powerOn 21.6.2006, 19:47
Цитата(mastanik @  21.6.2006,  20:04 Найти цитируемый пост)
только вот хэш MD5 из примера туда не хочет сохраняться...  

Куда туда? Код покажи.
 

Автор: batigoal 21.6.2006, 19:51
Цитата(mastanik @  21.6.2006,  20:04 Найти цитируемый пост)
Не, все-таки RAW

Уверен? Я в Оракле не спец, но типа RAW я там не знаю. А вот BLOB для byte[] подойдёт. 

Автор: mastanik 21.6.2006, 22:07
при попытке записи byte[] в RAW или BLOB вылетает ошибка, мол, неправильные Hex-данные.

пробовал делать .toString(), инсертится без проблем( в VARCHAR), но при восстановлении byte[] = String.getBytes() хеши уже не равны. такая вот штука. 

Автор: Stampede 21.6.2006, 22:35
mastanik, не надо прямо в виде байт сохранять. Преобразуй сначала в hex-строку, а потом делай с ней что хочешь. Стандартного класса/метода получить hex из bin и наоборот в Java нет, но можно сделать финт ушами, используя класс BigInteger:

Код

byte[] bytes = {0x1a, 0x0c, 0xf5, 0x36, ...};
BigInteger bi = new BigInteger(1, bytes);
String hex = bi.toString(16);


И вообще, сделай клас-утилиту, в котором все входные/выходные параметры шифрования представлены строками - потом много-много раз в жизни себе спасибо скажешь smile
  

Автор: mastanik 22.6.2006, 11:04
я так и думал...вот только очень лениво это было вчера вечером делать8)
пойду пробовать

всем спасибо 

Автор: mastanik 22.6.2006, 12:28
блин, я похоже ничего не понимаю8(

Код

BigInteger bi = new BigInteger(1, password1);
  String hex = bi.toString(16);
  byte[] p1 = hex.getBytes();
  System.out.println(password1 +"   " +password3  + Arrays.equals(password1, p1));


password1 и p1 неравны, что я делаю не так?

Добавлено @ 12:36 
все, блин, я глуп.
проблему решил8) 

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