Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ HASH для дайдТСста сообщСний

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ модуля Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ сообщСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ HMAC-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ HKDF- ΠΈ PBKDF2-ΠΊΠ»ΡŽΡ‡ΠΈ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ список Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ hash_algos(), Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ входят Π² Ρ‚Ρ€ΠΈ условныС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • Алгоритмы ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ crc32b ΠΈΠ»ΠΈ adler32: Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приносят ΠΏΠΎΠ»ΡŒΠ·Ρƒ, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ошибки ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ. Алгоритмы этой ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ часто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро. Π­Ρ‚ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ часто Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Β«Π»Π΅Π³ΠΊΠΎ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒΒ» ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ, поэтому ΠΎΠ½ΠΈ Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ Π² криптографичСских цСлях.
  • НСкриптографичСскиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сСмСйства xxHash: этими Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ часто Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Ρ…Π΅Ρˆ-значСния для Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ этой ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π΄Π°ΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ распрСдСлСниС ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ строковым Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Они Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΎΠ±Ρ‰Π΅ΠΌ быстрыС, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ Π² криптографичСских цСлях.
  • ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ сСмСйства SHA-2: ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Ρ…Π΅Ρˆ-значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‚ΡΡ ΡƒΠ³Π°Π΄Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ часто ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, Π½ΠΎ соврСмСнноС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ часто ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ этих Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ PHP пытаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° доступна. Π¦Π΅Π½Ρ‚Ρ€ рСсурсов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ бСзопасности (Computer Security Resource Center) ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ института стандартов ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ БША (NIST) Β»Β ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠ»ΠΈ Ρ„Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ стандарты ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ БША (US FIPS)).

    Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΡ Π΄ΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½Π½ΠΈΠ΅ криптографичСскиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ md4, md5 ΠΈ sha1 оказались ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΎΠ½Π½Ρ‹ΠΌ Π°Ρ‚Π°ΠΊΠ°ΠΌ, ΠΈ часто рСкомСндуСтся большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для криптографичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ FAQ ΠΏΠΎ бСзопасному Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ…Π΅Ρˆ-функциями ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ.

  • Установка ΠΈ настройка
  • ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ константы
  • HashContext β€” Класс HashContext
    • HashContext::__construct β€” Π—Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ конструктор для Π·Π°ΠΏΡ€Π΅Ρ‚Π° нСпосрСдствСнного создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
    • HashContext::__debugInfo β€” Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ контСкстС Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
    • HashContext::__serialize β€” Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ HashContext
    • HashContext::__unserialize β€” ДСсСриализуСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ data Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ HashContext
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Hash
    • hash β€” Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (подпись сообщСния)
    • hash_algos β€” Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список зарСгистрированных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
    • hash_copy β€” ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ контСкст Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
    • hash_equals β€” Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ строки Π±Π΅Π· риска Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
    • hash_file β€” Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° основС содСрТимого Ρ„Π°ΠΉΠ»Π°
    • hash_final β€” Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ Ρ…Π΅Ρˆ-ΠΊΠΎΠ΄Π°
    • hash_hkdf β€” Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ HKDF-ΠΊΠ»ΡŽΡ‡ ΠΈΠ· исходного ΠΊΠ»ΡŽΡ‡Π°
    • hash_hmac β€” Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ-ΠΊΠΎΠ΄ Π½Π° основС ΠΊΠ»ΡŽΡ‡Π° Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ HMAC
    • hash_hmac_algos β€” Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список зарСгистрированных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Ρ… для hash_hmac
    • hash_hmac_file β€” Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° основС ΠΊΠ»ΡŽΡ‡Π° Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ HMAC ΠΈ содСрТимоС Ρ„Π°ΠΉΠ»Π°
    • hash_init β€” Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ контСкст ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
    • hash_pbkdf2 β€” Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ PBKDF2-ΠΊΠ»ΡŽΡ‡ Π½Π° основС исходного пароля
    • hash_update β€” ДобавляСт Π΄Π°Π½Π½Ρ‹Π΅ Π² Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ контСкст Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
    • hash_update_file β€” ДобавляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ контСкст Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
    • hash_update_stream β€” ДобавляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ контСкст Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы