mirror of
https://github.com/Steffo99/appunti-magistrali.git
synced 2024-11-22 02:44:17 +00:00
1,018 B
1,018 B
aliases | |
---|---|
|
message authentication code system applicando due volte una funzione di hashing crittografico per generare due chiavi indipendenti.
Implementazione
L'implementazione è agnostica dalla funzione di hashing crittografico utilizzata, ma richiede in input la dimensione del blocco utilizzato.
from typing import Callable
HashFunction = Callable[[bytes], bytes]
def hmac(hashf: HashFunction, block_length: int, key: bytes, message: str) -> bytes:
base_padding = b"\x00" * (block_length - len(key))
inner_padding = b"\x36" * block_length
outer_padding = b"\x5c" * block_length
base_key = key + base_padding
inner_key = hash(base_key ^ inner_padding)
outer_key = base_key ^ outer_padding
return hashf(bf"{keyo}{keyi}{message}")
Caso d'uso
Viene usato solitamente nei general purpose computer.