Como dice Rapli, el final de la recepción solo ejecutará el código si se ha configurado explícitamente para hacerlo.
Aunque no veo ninguna razón para intercambiar código ejecutable de esta manera (a menos que estemos hablando de implementación de código en un sistema remoto que es una conversación muy diferente), puede haber buenas razones para garantizar la integridad de los datos de esa manera .
Como es habitual, TLS hace que la CIA sea mucho más simple pero, en ausencia de un certificado de cliente, no resuelve todos los problemas.
Un enfoque complementario sería (por ejemplo) utilizar un mecanismo de firma simple para crear un hash seguro usando un salt conocido por ambos extremos y enviarlo con el mensaje. Pero esto no protege contra los ataques de repetición. Para eso necesitas contraseñas de un solo uso o transacciones numeradas secuencialmente. Una alternativa que simplemente reduce la ventana de oportunidad sería acordar un TTL e incluir una marca de tiempo en la carga útil (firmada).
Pero tenga en cuenta que si va por el camino de un secreto compartido, especialmente si no está usando TLS, entonces obtendrá el beneficio adicional de confidencialidad al usar ese secreto como una clave de cifrado en lugar de solo una sal para el hash.