hmac
hashlib
sadece verilen mesaj sağlamalarının ederken, bir salt üretmek ve karma daha güçlü hale getirmek için key
sağlanan kullanır olmasıdır.
hmac
modül
source code bakarak
, buradan hashlib
modülü, kullanılan algoritma kullanılarak hmac
aynı davranışı nasıl ulaşılacağını bulacaksınız (orijinal bir tane değil, ben bazı Kontrollerin sadece ilginç kısım olsun elimden) :
import hashlib
MESSAGE = "msg"
KEY = "key"
trans_5C = "".join ([chr (x^0x5C) for x in xrange(256)])
trans_36 = "".join ([chr (x^0x36) for x in xrange(256)])
outer = hashlib.sha256()
inner = hashlib.sha256()
KEY = KEY + chr(0) * (inner.block_size - len(KEY))
outer.update(KEY.translate(trans_5C))
inner.update(KEY.translate(trans_36))
inner.update(MESSAGE)
outer.update(inner.digest())
result = outer.hexdigest()
print result # prints 2d93cbc1be167bcb1637a4a23cbff01a7878f0c50ee833954ea5221bb1b8c628
aynı doğrudan hmac
kullanarak: Yani
import hashlib
import hmac
result = hmac.new(KEY, MESSAGE, hashlib.sha256).hexdigest()
print result # prints 2d93cbc1be167bcb1637a4a23cbff01a7878f0c50ee833954ea5221bb1b8c628
hmac
kullanırken, sahip olduğu sadece gelmez Belirtilen hashing algoritmasını kullanarak verilen mesajı hesaba katar, ayrıca karma'yı karmaşıklaştırmak için anahtarı kullanır.
Cevabınız http://stackoverflow.com/questions/2836100/what-is-the-difference-between-a-hash-and-mac-message-authentication-code – Kracekumar
ok teşekkürler. er dj –