【Python】Blockchainの電子署名

電子署名を行うために、ecdsaをインストール
$ pip3 install ecdsa

from ecdsa import SigningKey, BadSignatureError, SECP256k1

secret_key = SigningKey.generate(curve = SECP256k1)
print("秘密鍵:" + secret_key.to_string().hex())
public_key = secret_key.verifying_key
print("公開鍵:" + public_key.to_string().hex())

doc = "これは送信したい文章です。"
signature = secret_key.sign(doc.encode('utf-8'))
print("電子署名" + signature.hex())

try:
	public_key.verify(signature, doc.encode('utf-8'))
	print("文章は改竄されていません。")
except BadSignatureError:
	print("文章が改竄されています")

SECP256k1は楕円曲線
電子署名は元の文章から作成されたか否かの判別を行う

秘密鍵:47c5c280197c691be3f80462b72d60b7b2915753f1a81a6eedbfbb2f01f55cae
公開鍵:02cfbf50fe5873ac6e5352e7524c4934e32f01281fc7d6112fed86cf58e72b09bb302f1f7d10d7c37d13eb7e62fd8bb1950b263c51ac76581f8b0a38d0d8853e
電子署名d17955d7f850edf05dde3e363a23dd0452420ec351dccd203f15479970a011c3dcb60b5629a33a7846727d9041e1b6d7be796b909b8ba803c490ace73a1c18e4
文章は改竄されていません。