๐ Secure/๐ Crypto
[Crypto] Python | RSA ์ํธ ์๊ณ ๋ฆฌ์ฆ ๊ตฌ์ถ
sa1t
2023. 9. 11. 22:51
๋ฐ์ํ
from Crypto.Util.number import getPrime
from gmpy2 import invert
# ํ์ด์ฌ์์ p, q ๊ฐ์ ์์ฑํ๋ ๋ฐฉ๋ฒ
p = getPrime(1024) #1024 bit / ๋ฌด์์๋ก ํฐ ๋ ์์ p, q ๊ณ ๋ฅด๊ธฐ
q = getPrime(1024)
# n ๊ฐ ๊ณ์ฐํ๋ ๋ฒ
n = p * q
# n ์ดํ์ n๊ณผ ์๋ก์์ธ ์๋ค์ ๊ฐ์ ๊ณ์ฐ
phi = (p - 1) * (q - 1)
# 1<e<phi ์ด๊ณ , e์ phi๊ฐ ์๋ก์์ธ e๋ฅผ ์ ํ ( ๋๊ฐ 65537 ์ฌ์ฉ )
e=65537
# de=1(mod phi)๋ฅผ ๋ง์กฑํ๋ d๋ฅผ ๊ณ์ฐํ๋ค / ์์์ ์ ์ k์ ๋ํด์ de=1+k phi๋ฅผ ๋ง์กฑ
d= invert(e,phi)
print("๊ณต๊ฐํค n = ",n)
print("๊ณต๊ฐํค e = ",e)
print("๊ฐ์ธํค d = ",d)
์ํธํ์ ๋ณตํธํ
# ์ํธํ
# ์๋ณธ ๋ฉ์์ง m, ์ํธํ๋ ๋ฉ์์ง M, ๊ณต๊ฐํค e,n , ๊ฐ์ธํค d
m=11
# ์ํธํ ๋ ๋ฉ์์ง = ์๋ณธ ๋ฉ์์ง ** ๊ณต๊ฐํคe % ๊ณต๊ฐํคn
M = m**e%n
print("์ํธํ ๋ ๋ฉ์์ง = ",M)
# ์๋ณธ ๋ฉ์์ง = ์ํธํ ๋ ๋ฉ์์ง ** ๊ฐ์ธํค d % ๊ณต๊ฐํคn
# ๋ณตํธํ
m = M**d%n
print(" ๋ณตํธํ ๋ ๋ฉ์์งn = ",m)
๋ฐ์ํ