MAC nima beradi?
Oddiy hashni har kim qayta hisoblay oladi. HMAC xabar va maxfiy kalitdan foydalanib haqiqiylik kodini hisoblaydi. Kalitni bilmagan tomon to‘g‘ri kod yaratishi qiyin. U shifrlamaydi va umumiy kalitni biladigan ikki tomon orasida kim yozganini mustaqil isbotlamaydi.
Aniq baytlar muhim
JSON bo‘shliqlari yoki maydon tartibi o‘zgarsa baytlar o‘zgaradi. Imzolash formatini aniq belgilang, kirish va verifikatsiyada bir xil canonical representation ishlating. Taqqoslashda compare_digest foydalaning.
Replay himoyasi
To‘g‘ri HMAC eski xabarni qayta yuborishni o‘zi to‘xtatmaydi. Vaqt oynasi, nonce yoki bir martalik identifikator va server tekshiruvi kerak. Webhook autentifikatsiyasi uchun provayderning aniq protokoliga rioya qiling. Dars kaliti sintetik, haqiqiy sir emas.
Python’da ko‘rib chiqamiz
import hmac
key = b"training-key-only"
tag = hmac.digest(key, b"amount=10", "sha256")
changed = hmac.digest(key, b"amount=11", "sha256")
print(hmac.compare_digest(tag, changed))Misolni
Mustaqil mashq
Xabar o‘zgarmaganda True qaytishini tekshiring. Nonce saqlash jadvalini chizing. HMAC va shifrlashning farqini yozing.