|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Шифрование паролей
Подскажите, пожалуйста. Есть главная форма с Edit1 логин и Edit2 пароль. Я создала пользователей с помощью WebUserList: admin, student и prepod. Для dmin существует Form2, для prepod и student Form3.Так же есть генератор паролей (на Form2). Необходимо сделать так, чтобы при нажатии кнопки "Генерировать пароль" полученное значение заносилось в WebUserList поле Password и хранилось в зашифрованном виде.
|
#2
|
||||
|
||||
Используй хеш.
|
#3
|
|||
|
|||
Простая процедура шифрования
Здесь одно из великого множества возможных решений.
Процедуры используют для шифрования метод побитового сложения по модулю 2 с некоторым кодовым словом (здесь это C[0..63]) Метод широко извкестен, его криптостойкость сильно зависит от длины кодового слова. Эту длину следует выбирать большей чем длина самого сообщения. Метод обратим. Дешифровка осуществляется повторным применением этой же функции к зашифрованному сообщению. Код:
const c:array[0..63] of byte=( //шифр $7A,$FD,$24,$34,$12,$6B,$1E,$F0,$4C,$13,$EC,$CC,$63,$5A,$59,$E3, $13,$87,$A7,$62,$B8,$96,$84,$3C,$4A,$5D,$B0,$E6,$86,$78,$9A,$3C, $C9,$C6,$BD,$E3,$6A,$6B,$91,$C7,$AB,$94,$4D,$94,$76,$76,$E3,$3D, $88,$4B,$DA,$FF,$CD,$48,$F9,$60,$F4,$BB,$EB,$28,$93,$E1,$53,$4E ); {--------шифровка-дешифровка--------} function CodeStr(s:string):string; var n:integer; begin for n:=1 to Length(s) do s[n]:=char(Ord(s[n]) XOR c[n MOD SizeOf(c)]); CodeStr:=s; end; {--------шифровка-дешифровка--------} procedure CodeStr2(var Pw;Leng:integer); var n:integer; P:^byte; begin P:=@Pw; for n:=0 to Leng-1 do begin P^:=P^ XOR c[n MOD SizeOf(c)]; inc(P); end; end; Последний раз редактировалось lmikle, 28.05.2011 в 20:28. |
#4
|
||||
|
||||
Цитата:
И получаем крптостойкость равную 0. Еще раз повторюсь: используй хеш (хотя бы MD5 и/или SHA1...) и будет тебе счастье. |
#5
|
||||
|
||||
Как сказал товарищ Konrad - необходимо использовать хэш. Хэш - необратим и поэтому вычислить пароль возможно только при помощи брутфорса. Шифровать пароли равносильно держать их в открытом виде ибо ключ есть явно в теле программы и вычислить его не составит особого труда.
Хорошо написанная программа не требует документации ICQ 9-184-668. |