Come dice Rapli, il destinatario riceve solo il codice se è stato esplicitamente configurato per farlo.
Anche se non vedo alcun motivo per lo scambio di codice eseguibile in questo modo (a meno che non si parli di implementazione del codice su un sistema remoto che è una conversazione molto diversa) potrebbero esserci buone ragioni per garantire l'integrità dei dati in questo modo .
Come al solito, TLS rende la CIA molto più semplice ma, in assenza di un certificato client, non risolve tutti i problemi.
Un approccio complementare sarebbe (per esempio) l'uso di un semplice meccanismo di firma che crea un hash sicuro usando un sale conosciuto da entrambe le estremità e inviandolo con il messaggio. Ma questo non protegge dagli attacchi di replay. Per questo è necessario avere password monouso o transazioni numerate in sequenza. Un'alternativa che riduce semplicemente la finestra di opportunità sarebbe quella di concordare un TTL e includere un timestamp nel payload (firmato).
Ma tieni presente che se stai seguendo la strada di un segreto condiviso, in particolare se non utilizzi TLS, otterrai il vantaggio aggiuntivo della riservatezza utilizzando quel segreto come chiave di crittografia piuttosto che un semplice sale per hash.