Loading [MathJax]/jax/output/HTML-CSS/jax.js

2019年8月30日金曜日

学習環境

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


  1. 12x=31q+131=12·2+712=7·1+57=5·1+25=2·2+15-2·2=15-(7-5)·2=15·3-7·2=1(12-7)·3-7·2=112·3-7·5=112·3-(31-12·2)·5=112·13-31·5=112·131(mod31)x13+31n13(mod31)

    よって求める逆元は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 コメント:

コメントを投稿