Tout système cryptographique basé sur une fonction à sens unique peut servir à signer un message.
Plaçons-nous dans le cadre d'un cryptage RSA, et supposons par exemple qu'Alice souhaite :
Il suffit à Alice d'envoyer le message : $(m,s)$, où $s = m^d$.
On peut aussi envoyer $(m, M^d)$, où $M$ est la valeur hachée de $m$, par exemple avec le SHA-256 : cet algorithme de hachage étant publique, Bob le possède. Il pourra donc calculer la valeur hachée de $m$, et la comparer à $(M^d)^e$.
En effet, Alice prouve ainsi qu'elle sait inverser la fonction, puisqu'en calculant $(m^d)^e$, Bob retrouvera $m$.
Cette méthode s'adapte sans problème à El Gamal, et à tout autre algorithme de chiffrement asymétrique.
Il existe un protocole pour faire en sorte que Bob soit le seul à pouvoir s'assurer de l'identité de l'expéditeur.