Il concetto che stai cercando è noto come firma digitale o autenticazione dei messaggi codice (MAC).
Un modo relativamente semplice per ottenere ciò che "solo" ha bisogno di una funzione hash crittografica resistente alle collisioni poiché gli ingredienti sono forniti da codici di autenticazione dei messaggi con hash codificati (HMAC). Tuttavia, ha lo svantaggio di qualsiasi crittografia simmetrica che, per consentire a due parti di verificare le proprie firme, devono prima scambiare la chiave segreta tramite un canale di comunicazione fidato. Se esiste un partito centrale fidato, un protocollo come Kerberos potrebbe essere usato per questo.
Nello scenario che descrivi, dove ci sono molte parti coinvolte, sembra più appropriato usare la crittografia asimmetrica. In questo modo, sarà sufficiente per ciascuna delle parti coinvolte distribuire la propria chiave pubblica che potrà essere utilizzata da qualsiasi altra parte per verificare le firme fatte da essa. Come funziona questa distribuzione non è ancora banale. Se il tuo sistema ha già una parte centrale fidata, potrebbe fungere da server-chiave in cui ciascuna parte può recuperare le chiavi pubbliche di altre parti su una connessione protetta come TLS. Un modo più decentralizzato sarebbe utilizzare una rete di fiducia .
Se si desidera utilizzare firme basate su crittografia asimmetrica, evitare di reinventare la ruota e utilizzare software collaudati come la GNU Privacy Guard (GnuPG) che può già farlo. (Vedi la sezione "Creare e verificare le firme" nel manuale.) Ha anche un supporto libreria chiamata GPGME destinata ad essere utilizzata da applicazioni di terze parti che desiderano utilizzare GnuPG internamente.