Nu este infinit. Există doi factori care controlează numărul potențial de semnături.
În primul rând, atunci când utilizați semnăturile ElGamal, aveți nevoie practic de un fel de schemă de umplutură. Deoarece este un algoritm cu logaritm discret, dimensiunea cheii trebuie să fie de cel puțin 3072 de biți pentru o securitate adecvată și, cu excepția cazului în care utilizați un XOF precum SHAKE256, va trebui să completați în siguranță hash-ul la o dimensiune adecvată. Dacă schema dvs. de umplutură este deterministă, cum ar fi PKCS #1 1.5, atunci aceasta nu introduce semnături posibile suplimentare. Cu toate acestea, dacă utilizați o schemă de semnătură probabilistică, atunci sarea folosită în schema de semnătură ar adăuga posibilități suplimentare.
În al doilea rând, atunci când semnați, va trebui și să alegeți $ k $, care ar trebui să fie aleasă aleatoriu din $ \{ 2 ⦠p-2 \} $ și să fie relativ prim pentru $ p - 1 $. Mărimea acelui set determină numărul de semnături valide pentru un anumit mesaj. Există mai multe metode sigure diferite de generare $ p $, iar ușurința de a calcula dimensiunea acestui set depinde de care este utilizat.
Cu toate acestea, din punct de vedere practic, este adesea prudent să folosiți o metodă deterministă sigură pentru alegere $ k $ (cum ar fi RFC 6979, care este extins trivial la ElGamal), deoarece asta înseamnă că o defecțiune a unui CSPRNG nu are ca rezultat scurgerea cheii private (deoarece nu este utilizat CSPRNG la semnare). Într-un astfel de caz, semnătura poate fi foarte bine deterministă, deși acest lucru nu poate fi verificat de destinatar.