Stap 11: Een handtekening maken
Dus hoe kan u een bestand/bericht ondertekenen?
Eerst, moet u weten dat de handtekening is 40 bytes en wordt vertegenwoordigd door twee waarden van 20 bytes, de eerste is genaamd R en naar de tweede men S heet... zo is het paar (R, S) samen uw handtekening ECDSA-ALGORITME... nu hier is hoe u deze twee waarden kunt maken om een bestand te ondertekenen... eerst moet u het genereren van een willekeurige waarde 'k' (van 20 stilzitrondes) en punt vermenigvuldiging gebruiken voor het berekenen van het punt P = k * G. X -waarde van dat punt zal vertegenwoordigen 'R'. Aangezien het punt op de curve die p wordt vertegenwoordigd door haar (x, y) coördinaten (elk wezen van 20 bytes lang), moet u alleen de waarde van 'x' (20 bytes) voor de handtekening en die waarde 'R' zal worden genoemd. Nu alles wat je nodig hebt is de waarde 'S'.
Voor het berekenen van S, moet u een SHA1-hash van het bericht, dit geeft je een 20 bytes dat u waarde zal beschouwen als een zeer grote geheel getal en we noemen het 'z'. U kunt nu S met behulp van de vergelijking berekenen:
S = k ^ -1 (z + dA * R) mod p
Opmerking hier de k ^ -1 die de 'modulaire multiplicatieve inverse' k... het is in principe de inverse van de k, maar omdat we te maken met gehele getallen, dan is dat niet mogelijk, dus het is een getal dat (k ^ -1 * k) modulo p is gelijk aan 1. En nogmaals, ik u eraan herinneren dat k de willekeurige nummer dat wordt gebruikt is voor het genereren van R, z de hash van het bericht is te ondertekenen, dA de persoonlijke sleutel is en R de x-coördinaat van is k * G (waar G is het punt van oorsprong van de parameters van de curve).