ランポート署名
一方向性関数として、出力が256ビットであるハッシュ関数hash( )を用いるとしよう。
ランポート署名は、ハッシュリストと組み合わせることで、公開鍵をただ一つのハッシュ値とすることができる。すなわち、 2 k {\displaystyle 2k} 個のハッシュ値 z i j {\displaystyle z_{ij}} から、さらにハッシュ値 z = h a s h ( z 1 , 0 ‖ z 2 , 1 ‖ ⋯ ‖ z k , 1 ) {\displaystyle z=hash(z_{1,0}\|z_{2,1}\|\cdots \|z_{k,1})} を計算し, z {\displaystyle z} のみを公開鍵として公開する。 z {\displaystyle z} を用いて署名の検証を行うためには、署名には、メッセージの各ビットに対応する乱数だけでなく、各ビットに対応していない乱数のハッシュ値を含める必要がある。その結果、署名のサイズは約2倍になる。
ハッシュリストの代わりに暗号学的アキュムレータを使用することで、署名にハッシュ値を追加しないで済む方法も知られている。