Firma HMAC-SHA256
Firmi mensaje con la chiave clave-secreta in HMAC-SHA-256 e otterrà una firma che inizia con fd7e5bf1, riproducibile solo da chi possiede quella chiave. Verifichi allo stesso modo le firme ricevute per scoprire i messaggi alterati. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
L'HMAC è una firma calcolata su un messaggio con una chiave segreta condivisa: chi riceve il messaggio ricalcola l'HMAC con la stessa chiave e, se combacia, sa che il contenuto è autentico e non è stato alterato. Questo strumento del KIT genera e verifica HMAC con SHA-256, SHA-1 o SHA-512, direttamente nel browser.
Cosa dimostra una firma con chiave
Un HMAC è un'impronta di un messaggio calcolata con un segreto condiviso dalle due parti. Un hash normale può calcolarlo chiunque, quindi dimostra solo che i dati non sono danneggiati. Un HMAC dimostra anche chi l'ha prodotto: senza il segreto nessuno può creare una firma che risulti valida. Lei sceglie l'hash di base, SHA-256, SHA-384 o SHA-512, e riceve la firma in esadecimale o in base64, oppure chiede di verificare una firma ricevuta e ottiene valida o non valida.
Dove si usano le firme HMAC
I link firmati sono un caso comune: un HMAC calcolato sull'indirizzo e sulla scadenza rende i link di download o di reimpostazione della password a prova di manomissione. Anche le code di messaggi lo usano, perché chi riceve possa scartare ciò che è stato alterato lungo il percorso, e i servizi se ne servono per fidarsi degli avvisi automatici di un altro sistema. La costruzione è stata formalizzata nella RFC 2104 nel 1996 e normata come FIPS 198, e tre decenni di analisi l'hanno lasciata quasi intatta.
HMAC contro hash semplice
Un hash chiunque può ricalcolarlo: non prova chi l'ha prodotto. L'HMAC aggiunge una chiave segreta, quindi solo chi la conosce può generare o verificare la firma. Ricalcolandolo verifichi che la chiamata arrivi davvero da loro e non da un impostore.
Verificare la firma di un messaggio ricevuto
È il caso d'uso numero uno. Ricevi un evento, prendi il corpo grezzo della richiesta, calcoli l'HMAC-SHA256 con il tuo secret e lo confronti con la firma nell'header. Qui incolli corpo e chiave e vedi subito se la firma torna.
La chiave resta tua
Per questo il calcolo avviene interamente nel browser: chiave e messaggio non vengono inviati online, non transitano da nessun server, non restano da nessuna parte. Puoi provare la firma di produzione senza mai esporre il secret.
Casi d'uso
Firmare le chiamate a un partner
Uno sviluppatore integra un corriere: ogni richiesta va firmata in HMAC-SHA256 con la chiave fornita. Qui prova la firma su una richiesta di esempio finché non combacia con quella attesa dal partner.
Link con scadenza a prova di manomissione
Un gestionale genera link di download temporanei firmati in HMAC: se qualcuno cambia la data di scadenza nell'URL, la firma non torna più e il link viene rifiutato.
Domande frequenti
Che differenza c'è tra HMAC e un hash normale?
L'hash lo può calcolare chiunque, quindi non autentica nessuno. L'HMAC usa una chiave segreta: solo chi la conosce può produrre o verificare la firma. Serve proprio a provare l'autenticità di un messaggio.
La mia chiave segreta viene inviata online?
No. Chiave e messaggio restano nel browser: il calcolo è locale, niente viene trasmesso o registrato. Puoi usare anche il secret di produzione senza esporlo.
Quale algoritmo devo usare?
Segui quello che indica il servizio da integrare: nella grande maggioranza dei casi è HMAC-SHA256. SHA-1 sopravvive in vecchie integrazioni; SHA-512 quando serve un margine extra.
Che differenza c'è tra un hash e un HMAC?
Un hash normale, come SHA-256, dimostra che un messaggio non è stato danneggiato, ma chiunque può calcolarlo, anche chi falsifica un messaggio. L'HMAC mescola nel calcolo un segreto condiviso, così solo chi lo possiede può produrre una firma che risulti valida.
Come verifico una firma ricevuta?
Scelga l'opzione di verifica e inserisca il messaggio, il segreto condiviso e la firma ricevuta. La risposta è un semplice valida o non valida, così capisce subito se il messaggio è stato alterato o firmato con un'altra chiave.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/hmac \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"payload","secret":"s3cr3t"}'const res = await fetch("https://api.kit.forhosting.com/dev/hmac", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "payload",
"secret": "s3cr3t"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/hmac",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "payload",
"secret": "s3cr3t"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/hmac", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"payload","secret":"s3cr3t"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"payload","secret":"s3cr3t"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/hmac", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "payload",
"secret": "s3cr3t"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hmac",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
HMAC contro hash semplice
È il meccanismo dietro la maggior parte dei webhook: quando un gateway di pagamento o un servizio ti manda una notifica, allega un HMAC calcolato con un secret concordato.
Verificare la firma di un webhook
Attento a due dettagli: firma il payload esatto, byte per byte, non il JSON riformattato; e confronta le stringhe in modo sicuro.
La chiave resta tua
Il secret di un webhook è una credenziale a tutti gli effetti: se finisce nei log di un servizio esterno, chiunque può falsificare le chiamate.
Nel backend, via API
Per un controllo manuale mentre fai debug, la pagina è lo strumento giusto e non costa niente. $0.002 a richiesta quando è il tuo server a dover firmare in automatico, per esempio per autenticare le chiamate verso un partner.
Casi di integrazione
Validare i webhook di pagamento
Rossi & Figli S.r.l. riceve le notifiche di incasso da PayPal. Prima di segnare un ordine come pagato, il sistema verifica l'HMAC della notifica: nessuna firma valida, nessun ordine sbloccato.
Domande tecniche
Come verifico la firma di un webhook?
Prendi il corpo grezzo della richiesta, calcola l'HMAC con l'algoritmo e il secret indicati dal servizio, e confrontalo con la firma nell'header. Se coincidono, la chiamata è autentica.
È davvero gratis?
Nel browser sì, senza limiti né registrazione. Il costo scatta solo via API, a $0.002 a richiesta.
Posso firmare in automatico dal mio server?
Sì, via API a $0.002 a richiesta: pensata per quando è il backend a firmare o verificare a ogni evento.