読者です 読者をやめる 読者になる 読者になる

RSA暗号書いてみた

https://github.com/shive/try_rsa

$ make keygen
python keygen.py
P = fe03
Q = fc95
N = fa9ecbbf / log2(N): 31.9694
K = 10001
U = da17e869 (V = dec9)
len(ORIGIN) = 22 b'\x8c\xc3\x92r\x82\xe2\x8a^\x82\xc6\x82\xd1\x82\xb1\x82\xde\x90\x85\x82\xcc\x89\xb9'
 origin_number: 5.485 b989cc828590de82b182d182c6825e8ae2827292c38c
encrypt_number: 5.993 dcbe91b6fd2c1e876b607a14d133386db8e174c221a9f723
decrypt_number: 5.485 b989cc828590de82b182d182c6825e8ae2827292c38c

$ make
scons -Q
scons: `.' is up to date.
./rsa
origin: 古池や蛙とびこむ水の音
0000b989cc828590de82b182d182c6825e8ae2827292c38c
encrypt: (binary)
dcbe91b6fd2c1e876b607a14d133386db8e174c221a9f723
decrypt: 古池や蛙とびこむ水の音
0000b989cc828590de82b182d182c6825e8ae2827292c38c

公開鍵は(0xfa9ecbbf,0x10001)。OpenSSLはK=0x10001で固定らしい。本来何でもいい。秘密鍵は(0xfa9ecbbf,0xda17869)。
これだと鍵長は32bitということでいいのかな?SSH用の鍵とか鍵長を2048bitとかにしてるから素因数分解をするのは不可能というのがよくわかる。この32bitでももう想像もつかん。