2019年8月30日金曜日

学習環境

中学数学からはじめる暗号入門 ~現代の暗号はどのようにして作られたのか~ (知りたい!サイエンス 141) (関根 章道(著)、技術評論社)の後編(現代の暗号)、第6章(RSA暗号を作ってみよう(暗号化) - 合同式)のやってみよう⑤の解答を求めてみる。


  1. 12 x = 31 q + 1 31 = 12 · 2 + 7 12 = 7 · 1 + 5 7 = 5 · 1 + 2 5 = 2 · 2 + 1 5 - 2 · 2 = 1 5 - 7 - 5 · 2 = 1 5 · 3 - 7 · 2 = 1 12 - 7 · 3 - 7 · 2 = 1 12 · 3 - 7 · 5 = 1 12 · 3 - 31 - 12 · 2 · 5 = 1 12 · 13 - 31 · 5 = 1 12 · 13 1 m o d 31 x 13 + 31 n 13 m o d 31

    よって求める逆元は13。

コード

Python 3

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols


class MyTest(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test(self):
        n = symbols('n', integer=True)
        x = 13 + 31 * n
        self.assertEqual((12 * x - 1) % 31, 0)


if __name__ == '__main__':
    main()

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

$ ./sample5.py
.
----------------------------------------------------------------------
Ran 1 test in 0.011s

OK
$ 

0 コメント:

コメントを投稿