SHA-3
Sponge бүтцэд суурилсан, SHA-2-оос өөр дотоод архитектуртай криптографийн hash функцийн гэр бүл.
- Стандарт
- FIPS 202
Чухал анхааруулга
SHA-3 нь шифрлэлт биш. Ethereum-ийн Keccak-256 нь стандарт SHA3-256-тай ижил биш.
Юу вэ?
2015 онд NIST-ийн баталсSHA-3 (Secure Hash Algorithm 3) нь NIST-ээс 2015 онд FIPS 202 стандартаар баталсан криптографийн hash функцийн гэр бүл юм. Keccak алгоритм дээр суурилдаг бөгөөд SHA-224, SHA-256, SHA-384, SHA-512-тэй ижил хэмжээний hash үүсгэх хувилбаруудтай. SHA-2-оос ялгаатай дотоод бүтэцтэй тул криптографийн өөр төрлийн хамгаалалтын шийдэл болдог.ан хамгийн сүүлийн үеийн хураангуй стандарт, Keccak алгоритм дээр суурилдаг.
Хэрхэн ажилладаг вэ?
SHA-3 нь Sponge буюу хөвөн бүтэц ашигладаг. Оролтын өгөгдлийг хэсэгчлэн шингээж (Absorbing), Keccak-f permutation үйлдлээр дотоод төлөвийг боловсруулна. Дараа нь шаардлагатай урттай hash утгыг гаргаж авдаг (Squeezing). SHA-2-ын Merkle–Damgård бүтцээс ялгаатай тул хоёр алгоритм өөр өөр математик үндэслэл, бүтцийн онцлогтой.
Хаана ашиглагддаг вэ?
- SHA-2-ийн нөөц хувилбар: SHA-2-оос өөр бүтэцтэй hash функц шаардлагатай системд ашигладаг. Криптографийн систем: Тоон гарын үсэг
- өгөгдлийн бүрэн бүтэн байдлыг шалгах зэрэгт ашигладаг. Ethereum: Keccak-256 хувилбарыг хаяг үүсгэх болон гүйлгээ
- өгөгдлийн hash тооцоолоход ашигладаг. Өгөгдөл боловсруулах: SHAKE128
- SHAKE256 зэрэг өргөтгөсөн гаралттай хувилбаруудаар шаардлагатай урттай hash утга үүсгэдэг.
Түгээмэл алдаа
- SHA-3 нь мэдээллийг буцаан тайлах боломжгүй
- SHA3-256 болон Keccak-256-ийг андуурч болохгүй
- Энгийн hash нь нууц үг хадгалахад тохиромжгүй
Жишээ код
import hashlib
# Оролтын өгөгдөл
message = b"Hello, SHA-3!"
# SHA3-256 hash үүсгэх
digest = hashlib.sha3_256(message).hexdigest()
print("SHA3-256:", digest)
# Өгөгдлийн бүрэн бүтэн байдлыг шалгах
expected_hash = digest
actual_hash = hashlib.sha3_256(message).hexdigest()
if actual_hash == expected_hash:
print("Data integrity verified")
else:
print("Data has been modified")