![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
хеш функция [D7, XP]
Ксандр © (2007-04-18 15:20:00)Как создать Хеш функцию
McSimm_ (2007-04-19 18:57:00) [1]Тут лучше http://ru.wikipedia.org/wiki/MD5
McSimm_ (2007-04-19 18:56:00) [2]http://www.google.com/search?q=md5+pascal
McSimm_ (2007-04-19 18:55:00) [3]Я же перечислил несколько.
Возьмите к примеру весьма распространенную (достаточно удобная и качественная) md5.
Реализации этого алгоритма, полагаю, можно найти для любого языка.
Kolan (2007-04-19 18:53:00) [4]> Может вы знаете более совершенную функцию
О, я ж говорю лень
Ксандр (2007-04-19 18:52:00) [5]McSimm_ © (19.04.07 18:50) [14]
Может вы знаете более совершенную функцию
Kolan (2007-04-19 18:52:00) [6]> Это пример очень плохой хэш-функции
Да их полно в нете, афтору ж лень поискать
McSimm_ (2007-04-19 18:50:00) [7]Это пример очень плохой хэш-функции, т.к. вероятность получения одинакового ключа для разных наборов огромна.
McSimm_ (2007-04-19 18:48:00) [8]function HashData(const data: String): Cardinal;
var
I: Integer;
begin
Result := 0;
for I := 1 to Length(data) do
begin
Result := Result + ord(data[I]);
end;
Result := Result mod 1001;
end;
Мог ошибиться, паскаля под рукой нет :)
Kolan (2007-04-19 18:42:00) [9]> Два примера:
Еще
Есть вписок строк. Тебе дают строку и говорят отыскать ее в списке. Можно тупо перебирать все строки и сравнивать каждый символ долго ессно.
А можно найти хеши строк и хеш заданой строки и искать по хешам, те сравнивая уже числа что гораздо быстрее.
Но тут возможны коллизии разным строкам соотв. одинаковый хеш
Ксандр (2007-04-19 18:36:00) [10]Вот нашёл исходник одной хеш функции помогите пожалуйста перевести её в Delphi
unsigned HashData(void * pDATA, int iLength)
{
unsigned uiRetVal = 0;
while (iLength--)
{
uiRetVal += (*(char*)pDATA++);
}
return uiRetVal % 1001;
}
McSimm_ (2007-04-18 15:44:00) [11]Два примера:
контрольная сумма. передается/хранится вместе с данными. проверка данных на соответствие контрольной сумме дает высокую вероятность целостности данных.
(частный случай - бит четности в запоминающих устройствах)
другой пример - хеширование паролей. система идентификации может хранить не сам пароль, а его хэш, при этом проверить введенный пароль на правильность возможно а узнать пароль по его хэшу обычно затруднительно.
Ксандр (2007-04-18 15:41:00) [12]Есть ли в интернете исходник программы использующую эту функцию
Ксандр (2007-04-18 15:39:00) [13]А зачем такая функция если данные нельзя обратно восстановить
McSimm_ (2007-04-18 15:34:00) [14]Хэширование - преобразование входного набора данных в меньший по объему, с большой долей вероятности однозначно ему соответствующий.
В отличие от архивирования не предусматривает возможности обратного восстановления.
Пример - контрольная сумма.
Алгоритмов хеширования много. Самые распространенные
CRC (вариации по размерности)
SHA-1,SHA-2 (SHA-256 и др.), MD5
Ксандр (2007-04-18 15:34:00) [15]Ну вобщето это не совсем любопытство, я люблю занимать крипталогией, и хочу узнать побольше о этой функции
Сергей М. (2007-04-18 15:32:00) [16]
> что это вообще за функция
А тебе зачем ?
Праздное любопытство ?)
Ксандр (2007-04-18 15:28:00) [17]Скажите пожалуйста что это вообще за функция, и принцип её работы, может, кто знает сайт.
McSimm_ (2007-04-18 15:22:00) [18]выбрать или придумать алгоритм хеширования, найти реализацию или реализовать самостоятельно.
DrPass (2007-04-18 15:22:00) [19]Например, так:
function Hash(var a: integer): integer;
begin
Result:= a * 2;
end;
Сергей М. (2007-04-18 15:22:00) [20]Вот так:
function HashFunction(параметры): результат;
begin
end;