Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Внизхеш функция Найти похожие ветки
← →
Ксандр (2007-04-18 15:20) [0]Как создать Хеш функцию
← →
McSimm_ © (2007-04-18 15:22) [1]выбрать или придумать алгоритм хеширования, найти реализацию или реализовать самостоятельно.
← →
Сергей М. © (2007-04-18 15:22) [2]Вот так:
function HashFunction(параметры): результат;
begin
end;
← →
DrPass © (2007-04-18 15:22) [3]Например, так:
function Hash(var a: integer): integer;
begin
Result:= a * 2;
end;
← →
Ксандр (2007-04-18 15:28) [4]Скажите пожалуйста что это вообще за функция, и принцип её работы, может, кто знает сайт.
← →
Сергей М. © (2007-04-18 15:32) [5]
> что это вообще за функция
А тебе зачем ?
Праздное любопытство ?)
← →
Ксандр (2007-04-18 15:34) [6]Ну вобщето это не совсем любопытство, я люблю занимать крипталогией, и хочу узнать побольше о этой функции
← →
McSimm_ © (2007-04-18 15:34) [7]Хэширование - преобразование входного набора данных в меньший по объему, с большой долей вероятности однозначно ему соответствующий.
В отличие от архивирования не предусматривает возможности обратного восстановления.
Пример - контрольная сумма.
Алгоритмов хеширования много. Самые распространенные
CRC (вариации по размерности)
SHA-1,SHA-2 (SHA-256 и др.), MD5
← →
Ксандр (2007-04-18 15:39) [8]А зачем такая функция если данные нельзя обратно восстановить
← →
Ксандр (2007-04-18 15:41) [9]Есть ли в интернете исходник программы использующую эту функцию
← →
McSimm_ © (2007-04-18 15:44) [10]Два примера:
контрольная сумма. передается/хранится вместе с данными. проверка данных на соответствие контрольной сумме дает высокую вероятность целостности данных.
(частный случай - бит четности в запоминающих устройствах)
другой пример - хеширование паролей. система идентификации может хранить не сам пароль, а его хэш, при этом проверить введенный пароль на правильность возможно а узнать пароль по его хэшу обычно затруднительно.
← →
Ксандр (2007-04-19 18:36) [11]Вот нашёл исходник одной хеш функции помогите пожалуйста перевести её в Delphi
unsigned HashData(void * pDATA, int iLength)
{
unsigned uiRetVal = 0;
while (iLength--)
{
uiRetVal += (*(char*)pDATA++);
}
return uiRetVal % 1001;
}
← →
Kolan © (2007-04-19 18:42) [12]> Два примера:
Еще
Есть вписок строк. Тебе дают строку и говорят отыскать ее в списке. Можно тупо перебирать все строки и сравнивать каждый символ — долго ессно.
А можно найти хеши строк и хеш заданой строки и искать по хешам, те сравнивая уже числа — что гораздо быстрее.
Но тут возможны коллизии — разным строкам соотв. одинаковый хеш…
← →
McSimm_ © (2007-04-19 18:48) [13]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;
Мог ошибиться, паскаля под рукой нет :)
← →
McSimm_ © (2007-04-19 18:50) [14]Это пример очень плохой хэш-функции, т.к. вероятность получения одинакового ключа для разных наборов огромна.
← →
Kolan © (2007-04-19 18:52) [15]> Это пример очень плохой хэш-функции
Да их полно в нете, афтору ж лень поискать…
← →
Ксандр (2007-04-19 18:52) [16]McSimm_ © (19.04.07 18:50) [14]
Может вы знаете более совершенную функцию
← →
Kolan © (2007-04-19 18:53) [17]> Может вы знаете более совершенную функцию
О, я ж говорю лень…
← →
McSimm_ © (2007-04-19 18:55) [18]Я же перечислил несколько.
Возьмите к примеру весьма распространенную (достаточно удобная и качественная) md5.
Реализации этого алгоритма, полагаю, можно найти для любого языка.
← →
McSimm_ © (2007-04-19 18:56) [19]http://www.google.com/search?q=md5+pascal
← →
McSimm_ © (2007-04-19 18:57) [20]Тут лучше http://ru.wikipedia.org/wiki/MD5
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c