103 lines
6.8 KiB
HTML
103 lines
6.8 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html lang="en">
|
||
|
|
<head>
|
||
|
|
<meta charset="UTF-8" />
|
||
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
|
|
<title>Страница 4</title>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<p style="text-align: center">
|
||
|
|
<i><b>Страница 4</b></i>
|
||
|
|
</p>
|
||
|
|
<hr />
|
||
|
|
<h1 style="text-align: center">Хеш-фукнция</h1>
|
||
|
|
<h2 style="text-align: center">Свойства хеш-функции</h2>
|
||
|
|
<p style="text-align: justify">
|
||
|
|
Хеш-функция (англ. hash function от hash —
|
||
|
|
«превращать в фарш»), или функция свёртки —
|
||
|
|
функция, осуществляющая преобразование массива входных данных
|
||
|
|
произвольной длины в выходную битовую строку установленной
|
||
|
|
длины, выполняемое определённым алгоритмом. Преобразование,
|
||
|
|
производимое хеш-функцией, называется хешированием. Исходные данные
|
||
|
|
называются входным массивом, «ключом» или
|
||
|
|
«сообщением». Результат преобразования называется
|
||
|
|
«хешем», «хеш-кодом», «хеш-суммой»,
|
||
|
|
«сводкой сообщения».[<a
|
||
|
|
href="https://ru.wikipedia.org/wiki/Хеш-таблица"
|
||
|
|
>7</a
|
||
|
|
>]
|
||
|
|
</p>
|
||
|
|
<p style="text-align: justify">Свойства хеш-функции:</p>
|
||
|
|
<ul>
|
||
|
|
<li style="text-align: justify">Должна обладать свойствами функции.</li>
|
||
|
|
<li style="text-align: justify">
|
||
|
|
Не должна обязательно являться инъективной или сюръективной.
|
||
|
|
</li>
|
||
|
|
</ul>
|
||
|
|
<p style="text-align: justify">Определения :</p>
|
||
|
|
<ul>
|
||
|
|
<li style="text-align: justify">
|
||
|
|
Если известна область определения и можно задать отображение в область
|
||
|
|
значений, мощность которого будет больше или эквивалентна мощности
|
||
|
|
области определения, при котором хеш-функция будет являться
|
||
|
|
<i>инъективной</i>, то такая хеш-функция будет являться<i
|
||
|
|
> идеальной хеш-функцией</i
|
||
|
|
>.
|
||
|
|
</li>
|
||
|
|
<li style="text-align: justify">
|
||
|
|
Если область определения неизвестна и можно задать отображение в
|
||
|
|
область значений, мощность которого будет больше или эквивалентна
|
||
|
|
мощности области определения, при котором хеш-функция будет
|
||
|
|
являться <i>инъективной</i>, то такая хеш-функция будет являться<i
|
||
|
|
> динамической идеальной хеш-функцией</i
|
||
|
|
>.
|
||
|
|
</li>
|
||
|
|
<li style="text-align: justify">
|
||
|
|
Если известна область определения и можно задать отображение в
|
||
|
|
область значений, мощность которого будет эквивалентна мощности
|
||
|
|
области определения, при котором хеш-функция будет
|
||
|
|
являться <i>биективной</i>, то такая хеш-функция будет являться
|
||
|
|
<i>минимальной идеальной хеш-функцией</i>.
|
||
|
|
</li>
|
||
|
|
<li style="text-align: justify">
|
||
|
|
Хеш-функция является <i>k-совершенной хеш-функцией</i>,
|
||
|
|
если область определения неизвестна и можно задать отображение в
|
||
|
|
область значений, любой элемент которого будет обладать не более чем k
|
||
|
|
отношениями.
|
||
|
|
</li>
|
||
|
|
</ul>
|
||
|
|
<div style="text-align: justify">
|
||
|
|
Существует несколько терминов, связанных с хеш-функцией:
|
||
|
|
</div>
|
||
|
|
<dl>
|
||
|
|
<dt style="text-align: justify"><i>Хеш</i></dt>
|
||
|
|
<dd style="text-align: justify">
|
||
|
|
элемент области значений, соотнесённый с заранее известным элементом из
|
||
|
|
области определения.
|
||
|
|
</dd>
|
||
|
|
<dt style="text-align: justify"><i>Хеширование</i></dt>
|
||
|
|
<dd style="text-align: justify">это процесс получения хеша.</dd>
|
||
|
|
<dt style="text-align: justify"><i>Коллизия</i></dt>
|
||
|
|
<dd style="text-align: justify">
|
||
|
|
ситуация, при которой нарушается условие инъективности хеш-функции.
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
<p style="text-align: justify">
|
||
|
|
Производительность хеширования в среднем случае зависит от того, насколько
|
||
|
|
хорошо хеш-функция приближена к биективной k-совершенной хеш-функции, где
|
||
|
|
разность количества отношейний любых двух элементов области значений
|
||
|
|
стремиться к нулю. Другими словами, каждый элемент области значений
|
||
|
|
обладает минимально возможным количеством отношений. Данное хеширование
|
||
|
|
автор книги [2, с. 291] Томас Кормен называет
|
||
|
|
<i>простым равномерным хешированием</i>.
|
||
|
|
</p>
|
||
|
|
<div style="text-align: justify">
|
||
|
|
Существует множество разнообразных хеш-функций, алгоритмы которых
|
||
|
|
применяются в различных ситуациях, например, когда требуется скорость
|
||
|
|
вычисления хеш-значения, но с повышенным шансом появления коллизии или
|
||
|
|
наоборот.
|
||
|
|
</div>
|
||
|
|
</body>
|
||
|
|
</html>
|