CRYPTO.MN
Hash функц

SHA-2

Өгөгдлийн бүрэн бүтэн байдлыг шалгах, тогтмол урттай хураангуй үүсгэдэг өргөн хэрэглээний криптографийн hash функцийн гэр бүл.

Стандарт
FIPS 180-4

Чухал анхааруулга

SHA-2 нь шифрлэлт биш. Нууц үг хадгалахад шууд ашиглахгүй, мөн hash утга дангаараа мэдээллийн жинхэнэ эх сурвалжийг баталгаажуулахгүй.

Юу вэ?

SHA-2 (Secure Hash Algorithm 2) нь NIST-ээс стандартчилсан криптографийн hash функцийн гэр бүл юм. Үүнд SHA-224, SHA-256, SHA-384, SHA-512 зэрэг хувилбарууд багтдаг. Ямар ч хэмжээтэй өгөгдлийг тогтмол урттай hash утга болгон хувиргадаг бөгөөд ижил оролтод үргэлж ижил үр дүн гаргана. SHA-1-ээс илүү аюулгүй байдлыг хангах зорилгоор боловсруулагдсан бөгөөд өнөөдөр өргөн хэрэглэгддэг.

Хэрхэн ажилладаг вэ?

SHA-2 нь Merkle–Damgård бүтцийг ашигладаг. Эхлээд оролтын өгөгдлийг тодорхой хэмжээтэй блокуудад хувааж, padding нэмнэ. Дараа нь блок бүрийг өмнөх төлөвтэй холбон compression функцээр боловсруулж, эцэст нь тогтмол урттай hash утга гаргана. Жишээлбэл, SHA-256 нь 256 бит буюу 32 байтын hash үүсгэдэг. Өгөгдлийн өчүүхэн өөрчлөлт ч гаралтын утгыг мэдэгдэхүйц өөрчилдөг.

Хаана ашиглагддаг вэ?

  • TLS сертификат: Сертификат болон тоон гарын үсгийн ажиллагаанд өгөгдлийн hash үүсгэхэд ашиглагддаг. Bitcoin: Гүйлгээ
  • блокийн hash болон Proof of Work механизмд SHA-256 ашигладаг. Дижитал гарын үсэг: RSA болон ECDSA зэрэг гарын үсгийн алгоритмтай хамт мессежийн hash үүсгэхэд ашиглагддаг. Файлын бүрэн бүтэн байдал: Файлын hash-ийг харьцуулж өөрчлөгдсөн эсэхийг шалгахад ашигладаг. Программ хангамж: Татаж авсан файл
  • шинэчлэлтийн багцын бүрэн бүтэн байдлыг баталгаажуулахад ашигладаг.

Түгээмэл алдаа

  • SHA-2 нь мэдээллийг буцаан тайлах боломжгүй hash функц
  • Энгийн hash нь нууц үг хадгалахад тохиромжгүй
  • Hash утга дангаараа мэдээллийг хэн үүсгэснийг батлахгүй

Жишээ код

Python
import hashlib

# Оролтын өгөгдөл
message = b"Hello, SHA-256!"

# Hash үүсгэх
digest = hashlib.sha256(message).hexdigest()

print("SHA-256:", digest)

# Өгөгдлийн бүрэн бүтэн байдлыг шалгах
expected_hash = digest
actual_hash = hashlib.sha256(message).hexdigest()

if actual_hash == expected_hash:
    print("Data integrity verified")
else:
    print("Data has been modified")

Hash функц ангилалын бусад алгоритм