Форум: "Потрепаться";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
ВнизАлгоритм шифрования паролей на суд народа :о) Найти похожие ветки
← →
Prohodil Mimo © (2004-08-31 11:49) [0]593, 398199 - это мой пасс в зашифрованном виде используемый в моих прогах... две цыфры получаю из одного слова через две функции,
каждая функция даёт свою цифру. При вводе пароля должны совпасть обе цифры.
Как то лет 5 назад придумал алгоритм, на идеальность не надеюсь, но интересно... за сколько времени его разгадать можно?Function TPass_Form.GetPasSum(S:String):Integer;
Var
I:Integer;
Sm:Integer;
Begin
Sm:=0;
For I:=1 to Length(S) do
Sm:=Sm+Ord(S[I]);
GetPasSum:=Sm;
End;
Function TPass_Form.GetPasRSum(S:String):Real;
Var
I:Integer;
Sm:Real;
Begin
Sm:=0;
For I:=1 to Trunc(Length(S)/2) do
Begin
If I<Length(S) then
Sm:=Sm+(Ord(S[I])/Ord(S[I+1]))
Else
Sm:=Sm+(Ord(S[I])/Ord(S[1]));
End;
GetPasRSum:=Sm;
End;
Что скажете? Сильно ругать будете?
Изначально писалось под ТР7, так что не ругайте за неиспользование Result.
← →
pasha_golub © (2004-08-31 11:55) [1]Sm:=Sm+(Ord(S[I])/Ord(S[I+1]))
Else
Sm:=Sm+(Ord(S[I])/Ord(S[1]));
А если будет деление на ноль?
← →
Delirium © (2004-08-31 11:56) [2]Очередной велосипед, см. ниже всё уже написано
http://delphibase.endimus.com/?action=viewtopic&topic=strcode
http://delphibase.endimus.com/?action=viewtopic&topic=mathcode
← →
Prohodil Mimo © (2004-08-31 11:59) [3][1] pasha_golub символ #0 в строке?
← →
Prohodil Mimo © (2004-08-31 12:03) [4][2] Delirium, зато я над этим сам думал, а не тупо скопировал чужое.
← →
VMcL © (2004-08-31 12:07) [5]>>Prohodil Mimo © (31.08.04 12:03) [4]
До xor"а я лет в надцать тоже сам додумался. Приятно, но толку мало :-)
← →
Delirium © (2004-08-31 12:10) [6]"сам думал" - это хорошо, но каков результат? - Никому, кроме тебя, не интересный алгоритм, мало эффективный и наверняка слабый. Никакой математической базы, алгоритм вычисления хеша дающий при близких исходных - близкий, а в ряде случев - идентичный результат. CRC32 эффективнее и надёжнее во 100 крат, не говоря о серьёзных вещах типа пресловутого MD5.
← →
pasha_golub © (2004-08-31 12:11) [7]Prohodil Mimo © (31.08.04 11:59) [3]
А почему бы и нет. Например, входная строка - это бинарный файл. Может быть? Может.
← →
Мюмзик в мове (2004-08-31 12:12) [8]с потерей шифровать замечательно, а вот когда нужно пароль на сторону передавать, такой способ уже не спасет
← →
Prohodil Mimo © (2004-08-31 12:12) [9]Сами по себе функции ничего не дают, возможны одинаковые варианты с разных исходных данных, а в паре вроде есть хоть какая то гарантия уникальности, вот только интересно какая.
← →
Prohodil Mimo © (2004-08-31 12:17) [10][7] pasha_golub
> А почему бы и нет. Например, входная строка - это бинарный
> файл. Может быть? Может.
не может, т.к. использую для ввода пароля с клавы.
[6] Delirium
> мало эффективный и наверняка слабый
вот и хочу узнать наскока.
← →
Delirium © (2004-08-31 12:22) [11]"вот и хочу узнать наскока" - в цикле запусти случайную генерацию строк, и получи документ типа
Слово: Мой Хеш: CRC32:
фывпыпыпывф 123 234.4 4572357
сцусцусцусм 5432 46456.2345 235645
...
Анализируй скажем на 1 000 000 строк, думаю, вполе достаточно чтобы какую-то статистику получить.
← →
Delirium © (2004-08-31 12:27) [12]Если у тебя повторений будет на много меньше - чем у CRC32 - молодец. Хотя, не очень корректный тест - у тебя размер хеша Integer + Real = 32 + 48 = 80 бит, а у CRC32 всего 32 бита.
← →
DeadMeat © (2004-08-31 12:35) [13]А я, в свое время, придумал вот такой способ шифрования текста... Хотя изначально хотел сделать сжатие, но коэффициент был слишком мал. Алгоритм до ужаса простой..., но так, просто, ради интереса.
Учитывая, что английский текст располагается в ASCII таблице располагается до 127, то можно последний, неиспользуемый бит использовать. Другими словами, в тексте HELLO WORLD у всех букв последний бит 0. Поэтому делаем так:
берем код первой буквы (H) и добавляем в его последний бит, первый бит следующей буквы. При этом сдвигаем все биты второй буквы на один влево, т.е. убираем этот бит. Дальше берем код второй буквы (Е), и в уже освободившиеся два последних бита добавляем два первых бита третьей буквы, сдвигаем код третьей буквы, на два бита влево. Берем третью букву (L) и добавляем в ее последние три бита, три первых бита следующей буквы. Сдвигаем и т.д...
До реализации руки не дошли, но она не сложная...
Как оцените?
← →
Prohodil Mimo © (2004-08-31 12:38) [14][13] DeadMeat, об этом я читал в какой то книжке по паскалю. только там был вариант уменьшение размера занимаепой памяти под цифры.
← →
DeadMeat © (2004-08-31 12:40) [15]Вот блин...
А я та думал, что новое чего то изобрел...
← →
Алхимик © (2004-08-31 14:46) [16]"Всё уже украдено до нас" (с) Операция Ы.
← →
vuk © (2004-08-31 14:59) [17]Кстати, в той же базе есть еще один известный алгоритм вычисления хеша. Он достаточно простой - на каждом шаге делается xor + циклический сдвиг регистра. Реализация на асме.
http://delphibase.endimus.com/?action=viewfunc&topic=mathcalc&id=10092
Для шифрования этот хеш, наверное, не очень подходит, но для организации всяких хеш-таблиц - вполне.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.033 c