
밑바닥부터 시작하는 비트코인
116
4
.
s
= (
z
+
re
)/
k
를 계산합니다.
13
5
. 서명은 (
r
,
s
)입니다.
공개키
P
는 검증자에게 보내야 하고
z
또한 검증자가 알아야 합니다. 뒤에서
z
는 계산으로 얻
고
P
는 서명과 함께 전송되는 것을 보게 될 것입니다.
3.12.6
서명 생성 실습
이제 서명을 생성할 수 있습니다.
CAUTION
_
무작위 숫자 생성 시 주의사항
파이썬에서제공하는
random
라이브러리등을사용해서각종암호관련연산에사용하는것은일반적으
로좋은생각이아닙니다.
13
여기서설명하는코드와라이브러리는상용제품적용이아닌학습목적으로
사용하기바랍니다.
해시함수를 사용해서 다음과 같이 서명을 생성할 수 있습니다.
>>> from ecc import S256Point, G, N
>>> from helper import hash256
>>> e = int.from_bytes(hash256(b'my secret'), 'big')
➊
>>> z = int.from_bytes(hash256(b'my message'), 'big')
➋
>>> k = 1234567890
➌
>>> r = (k*G).x.num
➍
>>> k_inv = pow(k, N-2, N)
>>> s = (z+r*e) * k_inv % N
➎
>>> point = e