Хеш алгоритъмът за файла няма правно значение. Криптографска хеш функция. Допълнително известие

Алгоритмите, разгледани от нас, се основават на абстрактната операция на сдвояване. В първия ред може да се види методът на разделно търсене, описания в "Таблица на символите и дървото на двоично търсене", с който елемент с ключ i се заема на i-та позиция на таблицата, което позволява да се обърнеш към новия без средата. В случай на произволно търсене, стойностите на ключовете се сортират като индекс към масива, а не като операнди на операцията за съвпадение; самият метод се основава на факта, че ключовете са различни числа от същия диапазон като индексите на таблиците. Имаме различно разпределение на хеширане - разширение на варианта на произволно търсене, което zastosovuetsya в по-типични допълнения на търсенето, де ключовете не мият пода на ръцете на властта. Крайният резултат от zastosuvannya този подход не е подобен на метода, базиран на povnyann - заменяйки преместването на структурите от данни на речника за допълнително съвпадение на ключове при търсене на ключове в елементите, ние се опитваме да преминем към елементите в таблици без средата, променяйки аритметичната трансформация на ключовете

Алгоритмите за установяване на какво се прави хеширане са съставени от два отделни елемента. Първото плетене на една кука е изчисляването на хеш функцията (хеш функцията), сякаш пренаписвам ключа за търсене на адреса на таблицата. В идеалния случай различните ключове трябва да се показват на различни адреси, но често два или повече различни ключа могат да дадат един и същ адрес в таблицата. За това друга част от търсенето е по метода на хеширане - процесът на разрешаване на сблъсъци (collision resolution), който придобива такива ключове. В един от методите за справяне с конфликти, които можем да видим в това разделение, vikoristovuyutsya zv'azkovі списъци, да се знае вината без посредник zastosuvannya динамични ситуации, ако е важно да се прехвърли броя на ключовете на шега. При другите два метода съвършенството на колосите достига до храма производителностПредполагам, че парчетата от елементите се записват от фиксирания масив. Можем да разгледаме начина за подобряване на тези методи, което ви позволява да ги победите в тихи ситуации, ако не е възможно да прехвърлите разпределението на масите предварително.

Heshuvannya - гарни дупебаланс между часове и obsyagom памет. Ако не беше размяната за обсебването на победоносната памет, ако беше някаква шега, щеше да е възможно да се виконирам за помощ само с още една годишнина на паметта, просто використите ключа като адреса на памет, като с розова шега. Въпреки това, за да подчертаете този идеален аспект на непостижимото, фрагментите за дългогодишни ключове може да се нуждаят от голяма мания за памет. От другата страна якбито нямаше граница виконен час, възможно е да се мине с минимално задължение за памет, като се използва методът на последователно запитване. Хеширането е начин за постигане на приемливо задължение за запомняне до часа и за постигане на баланс между две екстремни сили. Zocrema, можете да подобрите дали има баланс, просто промените размера на таблиците, а не да пренаписвате кода и да избирате други алгоритми.

Хеширането е една от класическите задачи на компютърните науки: докладвани са много различни алгоритми, които са широко известни. Бихме искали да отбележим, че в случай на не zhorstkih pripuschennya, можете да следвате операцията, за да знаете и вмъкнете в таблиците със символи с часа на въвеждане, независимо от таблицата.

Тази стойност е теоретичният оптимум на производителност за всяка реализация на таблици със символи, но все още не е панацея по две основни причини. първо, виконен часда лежи в стария ключ, като в истинските придатъци, които печелят старите ключове, може да е важно. По друг начин, хеширането не гарантира ефективно изпълнение на други операции от таблици със символи, като избор или сортиране. На когото сме разделили, ще разгледаме отчетно номерата и другите ястия.

Хеш функции

Необходимо е да променим изчислението на хеш функцията, която пренаписва ключовете и адресите на таблицата. Извикайте изпълнението на това аритметично изчисление да не стане сгъваемо, но все пак е необходимо да се вземат предпазни мерки, за да не се натъкнете на различни малки водни камъни. За изричност на таблицата, за да се премахне M елемента, е необходима функция, която преобразува ключовете в цялото число в диапазона. Идеалната хеш функция може лесно да се брои и да бъде подобна на функцията vipadkov: за всякакви аргументи резултатът може да бъде равен.

Хеш функцията е да депозирате според типа на ключа. Строго погледнато, хеш функция е необходима за удобни за кожата ключове. За да подобрите ефективността, призовавайте за уникалността на изричната трансформация на типове, обръщайки се към идеята да разгледате двуключово представяне на ключовете в машинна дума с поглед към цяло число, сякаш можете да спечелите в аритметични изчисления. Хеширането се появи преди високото ниво - на ранните компютри беше важно да се види дали стойността е като ключ на ред, като цяло число. За някои езикове на високо ниво е важно да се създават програми, които се съхраняват в представянето на ключове на конкретен компютър, но такива програми всъщност са машинно депозирани, така че е важно да ги прехвърлите на друг компютър. Обадете се на хеш функцията, за да лежи в процеса на преобразуване на ключовете в цяло число, при изпълнението на хеширане, важно е незабавно да се осигури и машинната независимост и ефективност. Като правило, прости ключове с цели числа или ключове с плаваща запетая могат да бъдат пресъздадени с помощта на една машинна операция, но могат да се използват ключове за редове и други типове ключове за склад страхотни витрии повече уважение към ефективността.

Имовирно, най-простата ситуация, ако ключовете са числа с плаваща запетая от фиксиран диапазон. Например, като ключове - числа по-големи от 0 и по-малки от 1, можете просто да умножите x по M, да закръглите резултата до най-малкото цяло число и да вземете адреса в диапазона между 0 и M - 1; такъв пример е показан на фиг. 14.1. Ако ключовете са по-големи от s и по-малки от t, можете да ги мащабирате, като погледнете s и ги разделите на ts , след което можете да използвате стойност между 0 и 1 в диапазона и след това да умножите по M и вземете адреса от масата.


Ориз. 14.1.

За преобразуване на числа с плаваща запетая в диапазона между 0 и 1, индексът на таблицата, чието разширение е повече от 97, се отчита умножението на тези числа по 97. това дупебяха използвани три колонии: за индекси, равни на 17, 53 и 76. Хеш стойностите се задават от най-високите цифри на ключа, по-младите цифри не играят същата роля. Една от целите на разширяването на хеш функцията е да се премахне такъв дисбаланс, така че рангът на кожата да бъде повреден.

По същия начин ключовете са w-битови цели числа, можете да ги преобразувате в числа с плаваща запетая и да разделите на 2 w, за да премахнете числа с плаваща запетая в диапазона между 0 и 1 и след това да умножите по M, както е в предния параграф. По същия начин операциите с плаваща запетая отнемат много време и числата не са достатъчно големи, за да ги пренаредят, но резултатът може да бъде изваден за допълнителни аритметични операции: трябва да умножите ключа по M и след това viconati zsuv вдясно по редове, за да се раздели по 2 w (защото е като умножение преди презаписване, виконати zsuv и след това умножение). Такива методи се използват за хеширане, тъй като ключовете не са разделени по диапазон равномерно, сегментите на хеш стойността се присвояват само от водещите цифри на ключа.

Най-простият и ефикасен метод за w-цифрени цели числа е един от, може би, най-често печелившите методи за хеширане - избор на начин за разширяване на таблицата M на просто число и изчисляване на излишъка в подразделението на M, tobto. h(k) = k mod M за всеки целочислен ключ k. Такава функция се нарича модулна хеш функция. Той дори просто изчислява (k % M в моя C ++) и е ефективен за постигане на равно разпределение на ключовите стойности между стойности, по-малки от M. Малък дуп е показан на фиг. 14.2.


Ориз. 14.2.

За три отчитания с дясна ръка, резултатът от хеширане на 16-битови ключове, предизвикващи зло, с помощта на такива функции:

v % 97 (леворуч)

v % 100 (в центъра) и

(int) (a * v) % 100 (дясна ръка),

de a = .618033. Разширяването на таблиците на тези функции изглежда е 97, 100 и 100. Стойностите изглежда са обърнати (части от обърнати ключове). Друга функция (v % 100) има само две крайни десни цифри на клавишите и следователно, за ненасилствени клавиши, производителността може да е ниска.

Модулно хеширане zastosovuetsya и до ключовете с плаваща запетая. Ако ключовете се намират в малък диапазон, можете да мащабирате числата в диапазона между 0 и 1, 2 w, за да извадите w-битовите цели числа и след това да спечелите модулната хеш функция. Вторият вариант е просто да се хакне като операнд на модулната хеш функция на декларацията с двоен ключ (тъй като е по-достъпна).

Модулното хеширане се застосовува във всички режими, ако има достъп до битките, от които се добавят ключовете, независимо дали са числа, представени от машинна дума, поредица от символи, пакетирани в машинна дума, или са представени от всяка друг възможен вариант. Последователността от vipadkovyh символи, опаковани в машинна дума - ние не знаем тези, които са vipadkovy tsili ключове, фрагменти не са всички видове заместник за кодиране. Ale obdva tsі типове (ако има някакъв друг тип ключ, кодиране, така че да може да се постави в машинна дума), можете да изглеждате като vipadkovy індекси в малка таблица.

Основната причина за избора на хеш таблица на прости числа за модулно хеширане е показана на фиг. 14.3. За това приложение на символни данни със 7-цифрено кодиране, ключът се интерпретира като число с основа 128 - една цифра от символа на кожата в ключа. Думата сега съответства на числото 1816567, но може да се запише като

Частите в ASCII кода на символа n, o и w представляват числата 1568 = 110 , 1578 = 111 и 1678 = 119 . Изборът на размер на таблицата M = 64 за този тип ключ не е наличен, добавяйки до x стойности, които са кратни на 64 (или 128), без промяна на стойността на x mod 64 - за всеки ключ, стойностите на хеш функцията са стойностите на останалите 6 бита от ключа. Разбира се, добра хеш функция е да се мамят всички видове ключове, особено за символни ключове. Аналогични ситуации могат да бъдат, ако M отмъсти за множителя, след това стъпка 2. Най-лесният начинуникален - изберете M е просто число.


Ориз. 14.3.

До реда на кожата на таблицата има 3-буквена дума, представляваща думата в ASCII код като 21-битово число в двойна и десета форма и стандартни модулни хеш функции за разширяване на таблици 64 и 31 (две крайни десни колони). Разширяването на таблици 64 може да се получи до неуместни резултати, осцилаторите за избор на хеш стойност са победители само в правилния ред на ключа, а буквите в думите на оригиналния ход са неравномерно разделени. Например, във всички думи, които завършват с буквата y, имате нужда от хеш стойност от 57. Първо, само значението на 31 означава по-малко числа в таблицата.

Модулното хеширане може лесно да се приложи, с изключение на това, че разширяването на таблиците може да бъде просто число. За някои програми можете да се задоволите с малко просто число или да потърсите в списъка с дадени прости числа нещо, което е близо до необходимия размер на таблицата. Например числата са равни 2 t - 1 є просто когато t = 2, 3, 5, 7, 13, 17, 19 и 31(і ні за всякакви други стойности на t< 31 ): это известные простые числа Мерсенна. Чтобы динамически распределить таблицу нужного размера, нужно вычислить простое число, близкое к этому значению. Такое вычисление нетривиально (хотя для этого и существует остроумный алгоритм, который будет рассмотрен в части 5), поэтому на практике обычно используют таблицу заранее вычисленных значений (см. рис. 14.4). Использование модульного хеширования - не единственная причина, по которой размер таблицы стоит сделать простым числом; еще одна причина рассматривается в разделе 14.4.


Ориз. 14.4.

Tsya таблица на най-големите прости числа по-малко от 2 n for Можете да спечелите за динамично разделяне на хеш таблицата, ако е необходимо, за да разделите таблиците с просто число. За всяка дадена положителна стойност в зашеметения диапазон на qiu, таблицата може да бъде победител за обозначаването на просто число, тъй като се счита за по-малко число, по-малко с 2 пъти.

Вторият вариант за обработка на множество ключове е да комбинирате мултипликативни и модулни методи: трябва да умножите ключа по константа в диапазона между 0 и 1 и след това да следвате модула M. С други думи, необходимо е да спечелите функцията . Mіzh стойности, M, че ефективната основа на ключовата числова система се основава на взаимовръзки, които теоретично могат да доведат до аномално поведение и дори ако е възможно да се спечели доста стойност a, реалното допълнение едва ли ще има проблем. Често как да изберем стойност f \u003d 0,618033 ... (златен разрез).

Има и незрели вариации на тази тема, zocrema, хеш функции, които могат да бъдат реализирани с помощта на такива ефективни машинни инструкции, както в случая на виждане на маската (div. rasdil posilan).

За богати придатъци, за които vikoristovuyutsya таблици със символи, клавишите є числа і obov'yazkovo є кратки; Преди всичко това са буквено-цифрови редове, които могат да бъдат дори по-дълги. Е, как се изчислява хеш функцията за такава дума, като averylongkey?

7-битовият ASCII код за тази дума получава 84-битов номер \begin(align*) 97 \cdot 128^(11) &+ 118 \cdot 128^(10) + 101 \cdot 128^(9) + 114 \ cdot 128^(8) + 121 \cdot 128^(7)\\ &+ 108 \cdot 128^(6) + 111 \cdot 128^(5) + 110 \cdot 128^(4) + 103 \ cdot 128 ^(3)\\ &+ 107 \cdot 128^(2) + 101 \cdot 128^(1) + 121 \cdot 128^(0), \end(align*),

твърде голям е, за да можете да го използвате, за да спечелите най-важните аритметични функции от повечето компютри. И най-вече е необходимо да завършите и богато да добавите ключове.

За да се изчисли модулната хеш функция за другите клавиши, смрадът се пренаписва фрагмент по фрагмент. Можете да ускорите аритметичните мощности на модулната функция и да победите алгоритъма на Хорнер (раздел 4.9 "Абстрактни типове данни"). Този метод се основава на още един метод за писане на числа, които са дадени на клавишите. За по-голяма яснота, нека запишем стъпките: \begin(align*) ((((((((97 \cdot 128^(11) &+ 118) \cdot 128^(10) + 101) \cdot 128^( 9) + 114) \cdot 128^(8) + 121) \cdot 128^(7)\\ &+ 108) \cdot 128^(6) + 111) \cdot 128^(5) + 110) \cdot 128^(4) + 103) \cdot 128^(3)\\ &+ 107) \cdot 128^(2) + 101) \cdot 128^(1) + 121. \end(подравняване *)

Това десето число, сякаш следва символичното кодиране на реда, може да бъде изчислено, когато го погледнете отдясно, умножавайки натрупаната стойност по 128 и след това добавяйки стойността на кодирането на обидния символ. В случай на дълъг ред, този метод за изчисляване на грешката ще бъде увеличен до число, по-голямо от тези, които могат да бъдат представени в компютър. Въпреки това, числото i не е необходимо, рудата е необходима само (малък) излишък в yogo podіlu на M. в даден момент от изчислението е възможно да се изчисли число, кратно на M - с кратно на кожата и добавяне на повече, е необходимо да се спести повече излишък в подразделението по модул M. Резултатът ще бъде същият, тъй като ние имаше способността да изчисляваме дълго число и след това ще извадим (дел. дясно 14.10). Внимание, водещо до не междинен аритметичен метод за изчисляване на модулни хеш функции дълги редове- div. програма 14.1. В тази програма има още един труден, останалите са трудни: подмяната на основата 128, в нашата програма се печели простото число 127. Причината за тази промяна е разгледана в обидния параграф.

Има безлични методи за изчисляване на хеш функции с приблизително еднакви числа, които за модулно хеширане са подобни на метода на Хорнер (една или две аритметични операции за символ на кожата в ключ). За vipadkovyh ключове, методите практически не се разминават един в един, но истинските ключове рядко са vipadkovy. Възможност с малка цена да се даде на реалните ключове жизнеспособен вид за разглеждане на произволни алгоритми за хеширане, чиповете изискват хеш функции, тъй като създават vipadkovі индекси на таблици независимо от разпределението на ключовете. Няма значение да организирате рандомизация, не е необходимо буквално да увеличавате обозначението на модулното хеширане - по-необходимо е, така че всички рангове на ключа да бъдат избрани за броя цели числа, по-малки от M.

M = 96 и a \u003d 128 (в планините),

M = 97 ta a = 128 (център) ta

M = 96 и a = 127 (отдолу)

Неправилен rozpodіl на първия завой - резултат от nerіvnomіrny vzhivannja писма и спестявания на nerіvnomіrnosti чрез тези, і razmіr tablesі, i множител, делим на 32.

В програма 14.1 един от начините да направите това е да използвате проста база за замяна на етап 2 на цяло число, което съответства на ASCII низа. На фиг. 14.5 фиг. 14.5 показва как да промените цвета на розите за типични ключове за редове. Теоретично, хеш стойността, създадена от програма 14.1, може да даде лоши резултати за разрешаване на таблици, които се делят на 127 (ако на практика е по-добре за всичко, може да е по-незабележително); за създаването на произволен алгоритъм е възможно да се избере стойността на множителя на Navmann. Друг ефективен индекс е вариацията на випадичните стойности на коефициентите при изчисляването на тези различни випадични стойности за цифрата на кожата на ключа. Такъв pidhid дава алгоритъм за рандомизация, който се нарича универсално хеширане.

Теоретично идеалната универсална хеш функция е същата функция, за която способността за съпоставяне между два различни ключа в таблица с размер M е точно равна на 1/M. Може да се изясни, че вариацията като коефициент в програма 14.1 не е фиксирана стойност, а последователност от променливи стойности, трансформиращи модулната хеш функция в универсална хеш функция. Ако обаче създадете нов випадичен номер за символа на кожата в ключа, това ще звучи неприятно. На практика е възможно да се постигне компромисът, показан в програма 14.1, не чрез запазване на масив от различни vip номера за ключовия скин символ, а чрез промяна на коефициентите за допълнително генериране на проста псевдо-vip последователност.

Необходимо е да се разшири интерфейсът на абстрактния тип, като се включи хеш в новата операция, така че ключовете да се показват върху броя на отрицателните числа, по-малки от размера на таблицата M.

Като част от тази статия ще ви разкажа какво е хаш, nav_scho вино е необходимо, де и як zastosovuєtsya, както и най-често срещаните запаси.

Много работа в галерията от информационни технологии е още по-критична за задължителните данни. Например, необходимо е да сдвоите два файла с размер 1 Kb всеки и два файла от 10 Gb всеки, едновременно. Ето защо алгоритмите, които позволяват да се работи с по-кратки стойности, се спазват от заявките.

Една от тези технологии е heshuvannya, тъй като тя е познала своето zastosuvannya в момента на победата. Але, мисля, че ти като голям користувачев още не си наясно що за животно е и защо е нужно вино. Така че нека се опитам да обясня всичко с най-прости думи.

Забележка: Застрахователен материал върху изключителен користувачи не пропускайте богатите технически аспекти, защитата за основни познания по йога е достатъчно по-ниска.

Какво е Hesh chi Heshuvannya?

Ще започна от условията.

Хеш функция, функция за сортиране- функция от специален вид, тъй като ви позволява да конвертирате дълъг текст в код на фиксиран документ (звук, кратко цифрово писмо).

Чешуваня- целият процес на пренаписване на външни текстове.

Хеш, Хеш код, Хеш стойност, Хеш сума- стойността на хеш функцията се премахва, така че фиксирането на блока се отменя.

Подобно на бахит, термините могат да бъдат образно описание, за което е лесно да се разбере защо е необходимо всичко. За това ще донеса малко дупе (относно други zastosuvannya rozpovіm troch pіznіshe). Да приемем, че имате 2 файла с размер 10 GB. Как можете да разберете кой от тях ви трябва? Можете да промените името на файла, но можете лесно да промените името на файла. Можете да се чудите на датите, но след копиране на файловете, датите могат да бъдат същите или в различен ред. Розмир, както сами разбирате, малко може да помогне (особено като rosmiri zbіgayutsya, защото не сте се учудили на точното значение на байтовете).

Оста тук е самият Hesh, който е кратък блок, който се формира от изходния текст на файла. За два файла от по 10 GB всеки ще има два различни, но кратки хеш кода (например "ACCAC43535" и "BBB3232A42"). Използвай ги, можете бързо да ги разпознаете необходимия файл, navit след копиране и промяна на имената.

Забележка: Във връзка с факта, че хешът в компютърния свят в Интернет вече е разбираем, тогава често всички, които могат да се позовават на хеша, бързо ще стигнат до самата дума Например, фразата "спечелих хеша MD5" в превод означава, че на сайта или тук алгоритъмът за хеширане е тестван спрямо стандарта MD5.

Мощност на хеш функциите

Сега, нека да поговорим за силата на хеш функциите, така че да ви бъде по-лесно да разберете и застосовывается и защо имате нужда от хеширане. Ейл, гръб до гръб, още една среща.

Колизия- това е положението, ако за два различни текста излезе една и съща хеш-сума. Както сами разбирате, сякаш блокът е фиксиран, тогава можете да измерите броя на възможните стойности и също така можете да го повторите.

И сега към самите правомощия на хеш функциите:

1. На входа можете да подадете текст на всякакъв вид разширение, а на изхода можете да въведете блок данни с фиксирани данни. Tse vyplyvaє z vyznachennya.

2. Хеш сумата на едни и същи текстове може да бъде еднаква. В противен случай такива функции са просто marni - tse аналогично на vypadkovy номер.

3. добра функциягърлото е виновно за доброто rozpodіl на майката. Изчакайте, ако изходният хеш е например 16 байта, тогава ако функцията върти общо 3 различни стойности​​​​​​​​​​​​​​​​​​​​​​​​​​Така функция е къса и няма 16 байта (16 байта за 2 ^ 128 опции, около 3 , 4 * 10 ^ 38 стъпки).

4. Колко добре функцията реагира на най-малките промени в изходния текст. Един прост пример. Запомнена 1 буква във файла с размер 10 GB, стойността на функцията може да е различна. Ако това не е така, тогава е още по-проблематично да блокирате такава функция.

5. Възможност за ревандикация. Още по-сгъваема опция, scho rozrakhovuєtsya за пеещи умове. Ale, същността на yogo е, че това е усещане за функцията Hash, тъй като тя се отнема, Hash сумата често ще се увеличава.

6. Скорост на изчисляване на хеш. Какво е значението на функцията на гърлото, колко време ще се брои? Nіyaky, дори ако е просто по-просто от тези файлове, porіvnyuvaty чи vikoristovuvaty іnshiy pіdhіd.

7. Композитност на възстановяването на данни от хеш стойността. Tsya характеристика е по-специфична, по-ниска zagalna, за да не е необходимо за такива. Въпреки това, за най-популярните алгоритми характеристиката се оценява. Например, почти не можете да видите оригиналния файл за тази функция. Prote, тъй като може да има проблем с колизии (например е необходимо да се знае дали има текст, който съответства на такъв хеш), тогава такава характеристика може да е важна. Например пароли, но за тях троки на година.

8. Затворен или затворен изходния код на такава функция. В резултат на това кодът не е валиден, последователността на подновяването на данните, но самата криптографска сила се отменя от силата. Отчасти проблемът е като шифроването.

Оста вече може да се премести на мощност "какво има сега?"

Имате нужда от повече хаш?

В хеш функциите има повече от три основни числа (те са по-важни).

1. Повторна проверка на целостта на данните. В този случай всичко е просто, такава функция трябва да се преброи бързо и да ви позволи да я промените сами, така че, например, заплитане от интернет, файлът не се пропилява за един час предаване.

2. Повишаване на сигурността, търсене на данни. Коригирането на разширяването на блока ви позволява да извлечете няколко предимства от основните задачи на шегата. В този случай има такива, които чисто технически, използването на хеш функции може да повлияе положително на производителността. За такива функции е още по-важно да представляват imovirnіst viknennia kolіzіy и garni rozpodіl.

3. За криптографски нужди. Tsey viewфункциите на яката са в застой в тихи щори, безопасно, което е важно, така че резултатите да могат лесно да бъдат коригирани или е необходимо максимално да се опрости задачата за извличане на основната информация от хеша.

Къде се забива хешът?

Подобно на вас, може би, вече се досещате за Hesh zastosovuєtsya на върха на bagatioh zavdan. Ос на kіlka іz от тях:

1. Паролите се записват не от умен човек, а от Hashsum, което ви позволява да осигурите по-високо ниво на сигурност. Дори ако нападателят откаже достъп до такава база данни, той ще трябва да прекара повече от час, опитвайки се да стигне до хеш кодовете на съответните текстове. Оста тук и важна е характеристиката "сгъване на изходните данни от хеш стойността".

Забележка: Raju се запознайте със статията за залагане за подобряване на сигурността на паролите

2. Програмиране, включително бази данни. Очевидно е, че често е по-добре да се говори за структури от данни, които ви позволяват да променяте shvidky poshuk. Суто технически аспект.

3. Часът на пренос на данни през мрежата (включително Интернет). Много протоколи, като TCP / IP, включват специални полета за преобразуване, за да отмъстят на хеш сумата на изходящото известие, така че дори и тук да се превърне в грешка, това не струва прехвърлянето на данни.

4. За различни алгоритми, свързани с безопасността. Например хешът се съхранява в цифрови електронни подписи.

5. За да проверите целостта на файловете. Сякаш беше дадено уважение, тогава често в Интернет можете да видите файлове (например архиви) с допълнителни описания с хеш код. Tsey zahіd zastosovuєtsya не само заради факта, че випадково не стартирате файла, който е бил объркан, когато сте били взети от интернет, но те просто се сриват на хостинг. В такива режими можете бързо да пренапишете хеша и, ако е необходимо, да качите отново файла.

6. Други хеш функции се създават за създаване на уникални идентификатори (като част). Например, когато запазвате снимки или само файлове, извикайте хеша в имената с датата и часа. Това позволява файловете да бъдат презаписани със същите имена.

Всъщност, по-далеч, по-често Hash функциите се забиват информационни технологии. Главно чрез тези, които задължават самите данни и стегнатост прости компютрипорасна много. В първия езикът е повече за пошук, а в другия езикът е повече за продоволствена сигурност.

Vіdomi Hash функции

Следващите три хеш функции са най-важни.

хеш функция- Това е функция, която преобразува данни (файл или документ) в кратък цифров код.

Например пренаписване на текста
"Пивнична филия РСУИТП"
y код
745

Хеш, подобен на масив, който е колекция от скаларни данни, около елементи от които са избрани за стойности на индекс. В изгледа на масива стойностите на хеш индекса не са малки, невидими числа, а по-скоро скалари. Ци скалари (заглавия ключове) vykoristovuyutsya за избор на стойности от масива.

Елементите на хеша не се появяват в определен ред. Можете да ги гледате като купчина библиографски карти. Горната половина на скин картата е ключът, а долната половина е стойността. За всеки случай, ако поставите стойност в хеша, се създава нова карта. Ако трябва да промените стойността, посочвате ключа и Perl знае картата, от която се нуждаете. Следователно редът на картите наистина не играе роля. Perl взема всички карти (така че залогът ключ-стойност) в специален вътрешен ред, което улеснява разглеждането на конкретна карта, така че когато бъде поискано, да не се налага да преглежда всички залози. Не е възможно да промените реда, в който се вземат картите, така че не се опитвайте да го правите.

Хеш функцията се използва за компресиране на документа M, който е подписан, до десет или стотици бита. Хеш функцията h() приема като аргумент на актуализацията (документа) M на фиксираната възраст и върти хеш стойността h(M)=N на фиксираната възраст. Обадете се на хешираната информация и ние ще уважим двойните известия на основното послание на добрите новини. Следното означава, че стойността на хеш функцията h(M) може лесно да бъде съхранена в документа M и не позволява извличането на самия документ M.

Хеш функцията е отговорна за задоволяването на ниско мислене:

    хеш функцията може да бъде чувствителна към всякакви промени в текста M, като вмъквания, уикита, пермутации и т.н.;

    хеш-функцията е виновна за майката на властта безвъзвратно, така че задачата да се избере документът M ", който улавя необходимите стойности на хеш функцията, е виновна за изчисляването на необратимото;

    Възможността стойностите на хеш функцията на два различни документа (независимо от всеки документ) да съвпадат може да бъде пренебрежимо малка.

Например,сумата от стойностите на ASCII кода на знаците е 65(A)+66(B)+67(C)=198. В идеалния случай стойността на хеш функцията може да бъде уникална, т.е. числото 198 може да се върти повече от ABC. На практика тя е далеч от достъпна (випадок, ако две различни поредици от символи могат да имат еднакъв хеш, те се наричат ​​коли). Inodes се налагат на хеш функцията необратимост на ума: tobto. за стойностите не е възможно да се възстанови последният ред. Класически пример за такава функция: MD5, която се използва за проверка на целостта на ISO изображенията. За MD5 и подобни колизии явлението е още по-негативно: намалява „стадия на необратимост“ на хеш функцията и позволява например да се промени паролата, като се знае хеша MD5.
Криптографските хеш функции са разделени на два класа:

Хеш функции без ключ (MDC (Modification (Manipulation) Detect Code) - kodi),

- хаш- функции° Сключ(MAC (Код за удостоверяване на съобщение) - Kodi).

Хеш функциите без ключ са разделени на два подкласа:

Слаби хеш функции,

Силни хеш функции.

Слаба хеш функция е еднопосочна функция H(x), която удовлетворява умовете на ума:

1) аргументът x може да бъде на ред малко с достатъчно количество;

2) стойността на H(x) може да бъде в ред от битове с фиксирана стойност;

3) стойността на H(x) е лесна за изчисляване;

4) за всяко фиксирано x е невъзможно да се знае друго

За голям брой технологии за сигурност (например удостоверяване, EDS) се инсталират функции за еднопосочно криптиране, също хеш функции. Основното разпознаване на такива функции е премахването на известието за достатъчно разширение на його дайджест - стойността на фиксираното разширение. Дайджест контролна сума vihіdnogo povіdomlennya, zabezpechuyuchi по този начин (с vikoristanny vіdpovіdny протокол) контрол на целостта на информацията. Основната мощност на хеш функцията:

  1. на входа на хеш функцията се подава индикация за достатъчна стойност;
  2. на изхода на хеш функцията се формира блок от фиксирани данни;
  3. изходната стойност на хеш функцията е различна според закона за равенство;
  4. при промяна на един бит на входа на хеш функцията, изходът се променя.

Освен това, за да се гарантира стабилността на хеш функцията преди атаки, отговорността на следното е да удовлетвори:

  1. как да знаем хеш стойността з, тогава проблемът е да се намери начин да се пресъздаде M, така че H(M) = з, може да бъде грубо сгъваем;
  2. за дадена промяна M, спецификацията на друга промяна M', така че H(M) = H(M'), може да бъде числено важна.

Farming Personal Luzlosyov на Yakschko Hesh-Funki, след това I SHO SHO SHEY Forms, Bood Un_kalo ІDentyfіkuvati Ridomlennya, і Be-Yaki Schosni Kmіnnynynya Скоростта в предаванията Budy е изсъхнала от Wickennya Heshuvanna S priymuy PYYYYYYYYYY.

Друга особеност на хеш функциите са тези, които не позволяват да се обърне смрадта - невъзможно е да се погрижим за друг дайджест. Това се нарича функции за еднопосочно криптиране.

Хеш функциите ще следват итеративна схема, ако бъдат разбити на блокове с еднакъв размер и от тях ще бъдат изградени редица трансформации като обратни операции и операции без връщане. По правило преди склада на хеш-трансформацията се включва функцията за изстискване, частите на изхода често са по-малки от блока, който се изпраща за вход. Изходът от предишния цикъл, както и червеният блок на подкрепа, се прилага към влизането в цикъла на кожата на хешуваня. По този начин, в цикъла на кожата, хеш функцията з ие хеш перс иблокове.

Как да познаете, как да разпределите на случаен принцип входящите блокови шифри, можете, като функция на преработване на хеш, да победите блоков шифър. Тези, които блоковите шифри са обратни трансформации, не заменят силата на хеш функцията, блоковият шифър е необратим зад ключа за криптиране и, както в качеството на ключа за криптиране, използва се вихд напред плетене на една кука на хеш трансформацията , а в качеството на къщата, шифровайки ключа за криптиране (в противен случай), можете да изберете хеш функция с добри криптографски характеристики. Такъв pidkhіd vikoristany, например, в руския стандарт heshuvannya - GOST R 34.11-94. Тази хеш функция формира 256-битова стойност, vikoristovuyuchi как да се трансформира операцията на блоковия шифър GOST 28147-89 (фиг. 2.17). Функцията за хеширане H премахва входния хеш, премахва хеша на предната плетене на една кука (стойност ч 0 dovílne cob номер), както и черен блок за спомен м и. Вътрешната структура е показана на фиг.2.18. Тук в блока за шифроване за модификация з ив s иблоков шифър GOST 28147-89. Пермутационната пермутация е модифицирана пермутация на Феищел. За останалата част от блока m N(N - броят на блоковете уведомления) ще бъдат запълнени до 256 бита с добавяне на истинския период на уведомяване.


Основният недостатък на хеш функциите, базирани на блокови шифри, е ниската скорост на тяхната работа. Поради това са разработени редица специални алгоритми, които, като гарантират подобна стабилност преди атаки, ще увеличат броя на операциите върху входните данни и ще осигурят по-голяма сигурност на работата. Прикладите на такива алгоритми са: MD2, MD4, MD5, RIPEMD - 160, SHA. Нека да разгледаме структурата на алгоритъма за хеширане SHA (Secure Hash Algorithm), който е описанието на стандарта SHS и сигурността на електронните цифров подпис DSA, образувайки 160-битов дайджест.

Последователността от съобщения е разделена на 512-битови блокове. Ако увеличението е кратно на 512, десният 1 се присвоява на останалата част от блока, след което vin се добавя с нули до 512 бита. В края на оставащия блок се записва кодът на следващото известие. В резултат на това гледам н 512-битови блокове M 1 , M 2 ..., M n .

SHA алгоритъм vikoristovu 80 логически функции f 0 , f 1 , …, f 79 , за извършване на операции върху три 32-битови думи (B, C, D):

В алгоритъма има и 4 константи K i и 5 стойности на cob H i в специален ред на инициализация.

Разделяме масива M на група от 16 думи W 0, W 1, ..., W 15 (W 0 е най-добрата дума).
За т= 16 - 79 W t = S 1 (W t-3 ⊕ W t-8 ⊕ W t-14 ⊕ W t-16)
S k означава действието на цикличното изместване наляво кразряди.
Нека сега A = H 0, B = H 1, C = H 2, D = H 3, E = H 4 .
за т= 0 до 79 направи
TEMP = S 5 (A) + е т(B, C, D) + E + W t + K i.
E=D; D=C; C=S30(B); B=A; A=TEMP;
Нека H0 = H0 + A; H1=H1+B; H 2 = H 2 + C; H3=H3+D; H4 = H4+E.

Графично един цикъл от SHA представяния Фиг.2.19.

В резултат на обработката на масива M, 5 думи H0, H1, H2, H3, H4 ще бъдат взети от заглавката на 160 бита, което ще направи дайджест.

От посочените данни става ясно, че сгъването на американския стандарт за хеширане е по-ниско от това на руския. Руският стандарт предава няколко криптирания в един цикъл на оформяне на хеш или в общо 128 кръга. Кожен кръг от криптиране отнема около дузина елементарни машинни операции, което по същество спестява машинно време за повече операции с линии, което се ремиксира. Един кръг на генериране на хеш SHA е много по-прост: всички могат да бъдат реализирани в около 15-20 отбора, общият брой кръгове е 80, а в един цикъл на генериране на хеш се обработват два пъти повече данни - 512 срещу 256 в GOST P34. ll - 94. По този начин можем да предположим, че реализациите на софтуерния код на SHA ще бъдат около 3-6 пъти по-ниски от стандарта на страната.


Основната задача на хеш функциите е създаването на обобщения, които са уникални за конкретен документ. Що се отнася до два различни входни блока, хеш функцията дава един и същ дайджест, такава ситуация се нарича хеш сблъсък. Три теореми, които мога да нарека "парадоксът на дните на хората", показват, че за n-битова хеш стойност, тя е необходима в средата. n/2 rіznih vhіdnih vіdomlen, schob vinikla kolіzіya. Практически е невъзможно да промените документа с подпис за допълнителна помощ, например към алгоритъма SHA с проста селекция, фрагментите с такъв подход трябва да генерират близо 2 80 различни напомняния, така че да е подобен на дайджест . Цифрата Tsya е недостижима за сегашното ниво на технологиите.

Често, когато торентът е пристрастен или без средата на самите файлове, в описанието те стоят на kshtalt „ad33e486d0578a892b8vbd8b19e28754“ (например ex.ua), често с постскриптум „md5“. Хеш кодът е резултатът, както изглежда хеш функцията след обработка на входните данни. В превод от английски хаш означава бездомна, марихуана, трева или трева от ситно нарязано месо и зеленчуци. все по-сгъваеми, можем да кажем, че е практически невъзможно. Тоди обвинява храната: „Сега имате нужда от цялата смрад, за да видите неразумна абракадабра, така че не можете да я дешифрирате?“. Относно tse y timetsya и tsіy stattі.

Какво е хеш функция и как се прави?

Тази функция се разпознава за преобразуване на входни данни, както винаги страхотно разширениерезултат от определен период. Самият процес на такава трансформация се нарича хеш, а резултатът е хеш или хеш код. Понякога думите „глас“ или „дайджест на информация“ са победоносни, но на практика вонята е по-изразена. Използвам много различни алгоритми, за да направя възможно трансформирането на всеки масив от данни в последователност от символи в традицията на песни. Най-широкообхватният алгоритъм беше наречен md5 и беше разширен през 1991 г. Независимо от тези, които днес md5 е твърде стар и не се препоръчва до по-късно, той все още се използва и често заменя думата „хеш код“, в сайтовете просто напишете md5 и въведете кода.

Имате нужда от хеш функция?

Познавайки резултата, практически е невъзможно да се изчислят входните данни, но самите входни данни дават същия резултат. Поради тази причина хеш-функцията (наричана още функция за сгъване) често е хакната, за да се спестят повече пари. важна информация, като парола, вход, номер на акаунт и друга лична информация. При замяната на записи, които са въведени с правилния, с тези, които са записани от базата данни, се въвеждат хешовете. Давам ви гаранция, че с потока от информация никой не може да спечели важна почит за собствените си цели. Използвайки начин за проверка на хеш-кода, можете също ръчно да проверите правилността на изтеглянето на файлове от Интернет, като че ако изтегляте за един час, имаше прекъсвания във връзката.

Хеш функции: какво е смрадт

Успоредната хеш функция може да бъде един от трите типа:

1. Функцията за проверка на целостта на информацията

Ако се осъществи достъп до него чрез сливане, хешът на пакета се търси и резултатът също се прехвърля наведнъж от файла. При получаване хеш кодът се преизчислява и сравнява с изваждането на стойностите. Ако кодът не е spivpad, не е достатъчно да се говори за помилване и пакетът ще бъде компресиран отново. Тази функция има shvidka swidkist rozrahunka, но броят на хеш стойностите е малък и тази мръсна стабилност. Приклад от този тип: CRC32, тъй като може да има само 232 други стойности.

2. Криптографска функция

Vykoristovuєtsya за zahistu vіd ND. Те ви позволяват да ревизирате, така че да не са създадени данни в резултат на ND и часа на прехвърляне на файловете през връзката. Правилният хеш на различни файлове с достъп и хешът на премахнатия файл може да се изчисли с помощта на други анонимни програми. Такива функции могат да бъдат дългосрочен и стабилен срок на работа, а търсенето на колоси (възможни печалби в резултата в различни уикенди) е още по-сложно. Същите функции се използват за запазване на бази данни с пароли (SH1, SH2, MD5) и друга ценна информация.

3. Функция, призната за създаване на ефективна структура от данни

По този начин той е компактен и управлява организацията на записите в специална структура, която се нарича хеш таблица. Такава таблица ви позволява да добавяте нова информация, да виждате данните и да виждате необходимите данни с много висока сигурност.

вируси