1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-22 18:44:17 +00:00
appunti-steffo/8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/HMAC.md
2023-09-21 02:46:23 +02:00

33 lines
No EOL
1,018 B
Markdown

---
aliases: ["keyed hash function"]
---
[[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.
```python
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]].
## Vedi anche
- #Extra [RFC 2104: **HMAC: Keyed-Hashing for Message Authentication**](https://datatracker.ietf.org/doc/html/rfc2104)