2019年4月6日土曜日

開発環境

Programming Bitcoin: Learn How to Program Bitcoin from Scratch (Jimmy Song(著)、O'Reilly Media)のChapter 3(Elliptic Curve Cryptography)、Coding Point Addition over Finite Fields、Exercises 2(47)の解答を求めてみる。

コード

Python 3

#!/usr/bin/env python3
from ecc import FieldElement, Point
prime = 223
a = FieldElement(0, prime)
b = FieldElement(7, prime)
pairs = [((170, 142), (60, 139)),
         ((47, 71), (17, 56)),
         ((143, 98), (76, 66))]

for (x1, y1), (x2, y2) in pairs:
    x1 = FieldElement(x1, prime)
    y1 = FieldElement(y1, prime)
    x2 = FieldElement(x2, prime)
    y2 = FieldElement(y2, prime)
    p1 = Point(x1, y1, a, b)
    p2 = Point(x2, y2, a, b)
    print(f'{p1} +\n{p2}\n= {p1 + p2}')

入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))

C:\Users\...>py sample2.py
Point(170,142)_0_7 FieldElement(223) +
Point(60,139)_0_7 FieldElement(223)
= Point(220,181)_0_7 FieldElement(223)
Point(47,71)_0_7 FieldElement(223) +
Point(17,56)_0_7 FieldElement(223)
= Point(215,68)_0_7 FieldElement(223)
Point(143,98)_0_7 FieldElement(223) +
Point(76,66)_0_7 FieldElement(223)
= Point(47,71)_0_7 FieldElement(223)

C:\Users\...>

0 コメント:

コメントを投稿