楕円曲線DSA
曲線上の点 ( x 1 , y 1 ) = k ∗ G {\displaystyle (x_{1},y_{1})=k*G} を計算する。
r = x 1 mod n {\displaystyle r=x_{1}\,{\bmod {\,}}n} を計算する。 r = 0 {\displaystyle r=0} となる場合には k {\displaystyle k} の選択に戻る。
s = k − 1 ( z + r d A ) mod n {\displaystyle s=k^{-1}(z+rd_{A})\,{\bmod {\,}}n} を計算する。 s = 0 {\displaystyle s=0} となる場合には k {\displaystyle k} の選択に戻る。
( r , s ) {\displaystyle (r,s)} が m {\displaystyle m} に対する署名となる。
s {\displaystyle s} を計算する際に、 HASH ( m ) {\displaystyle {\textrm {HASH}}(m)} から得られる z {\displaystyle z} は整数に変換される。 z {\displaystyle z} は n {\displaystyle n} より「大きい」ことは許されるが、「長い」ことは許されない。
DSAと同様に、署名ごとに異なる k {\displaystyle k} を選択することは極めて重要である。