![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 - необходимо использовать хэш. Хэш - необратим и поэтому вычислить пароль возможно только при помощи брутфорса. Шифровать пароли равносильно держать их в открытом виде ибо ключ есть явно в теле программы и вычислить его не составит особого труда.
|