๋ฌธ์
HOMEWORK01
Bob์ RSA ๊ณต๊ฐํค (e,n)์ ๋ค์๊ณผ ๊ฐ์ ์ฑ๋ถ์ ๊ฐ์ง๋ค.
e=65537
n=179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430652885096550381956977355009744407642308411545070379136134645709973060633048727107215362312651042098054062317216389604359801702614666769905641776363676873830995947
์ ์ ๋ณด๋ง์ ์ด์ฉํ์ฌ Bob์ ๊ณต๊ฐํค๋ก ๊ฒ์ฆ์ ์ฑ๊ณตํ๋๋ก ์์ ์ ์ด๋ฆ์ ๋ํ ์๋ช
s๋ฅผ ์์ฑํ๋ผ.
์ฆ, Sagecell (https://sagecell.sagemath.org/)์ ์ด์ฉํ์ฌ ๊ฒ์ฆ ์ ์์ ์ ์ด๋ฆ์ด ๋์์ผ ํ๋ค(์๋ ์ ์ถ ๋ฐฉ๋ฒ ์ฐธ์กฐ).
๊ณผ์ ๋ ๋ค๋ฆ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ email(dechiffreur.y@gmail.com)๋ก ์ ์ถํฉ๋๋ค
๊ณผ์ ๋ 7์ 23์ผ 23:59:59 ๊น์ง ์จ ๊ฒ๋ง ์ ํจํฉ๋๋ค.
1) ๋ฉ์ผ์ ๋ชฉ์ ๋ฐ๋์ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์์ฑ : [BOB11]๊ณต๊ฐํค์ํธ๊ตฌํHW01_์ด๋ฆ
2) ๋ฉ์ผ ๋ด์ฉ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ๋ฃ์ผ์๊ธฐ ๋ฐ๋๋๋ค. (๋ณต๋ถํด์ ๋ฉํฐ์ ์ด๋ฆ์ด ๋์์ผ ์ฑ๊ณต์
๋๋ค)
--
s = ์์ ์ ์ด๋ฆ์ ๋ํ ์ ์์๋ช
(์ ์๊ฐ)
e = 65537
n = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430652885096550381956977355009744407642308411545070379136134645709973060633048727107215362312651042098054062317216389604359801702614666769905641776363676873830995947
mprime = pow(s,e,n)
bytes.fromhex(hex(mprime)[2:]).decode('utf-8')
--
CODE
import math
from unicodedata import decimal
import Crypto
from Crypto.Util.number import bytes_to_long, inverse
e = 65537
n = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430652885096550381956977355009744407642308411545070379136134645709973060633048727107215362312651042098054062317216389604359801702614666769905641776363676873830995947
def RSA(n):
p_tmp = math.isqrt(n)
if ((p_tmp) % 2) == 0:
p_tmp = (p_tmp + 1)
for i in range(100000):
if ((n % p_tmp) == 0):
return p_tmp
else:
p_tmp = p_tmp + 2
else:
for i in range(1,1000000):
if ((n % p_tmp) == 0):
return p_tmp
else:
p_tmp = p_tmp + 2
p = RSA(n)
q = int(n//p)
pi = (p-1)*(q-1)
d = pow(e,-1,pi)
print('d', d)
v = bytes_to_long("๋จํ๊ฒฝ".encode())
s = pow(v,d,n)
print('s', s)
mprime = pow(s, e, n)
print(bytes.fromhex(hex(mprime)[2:]).decode('utf-8'))
'Security' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ณผ์ ์ ๋ฆฌ] CARVING ํ์จ์ด ์ถ์ถ (0) | 2023.03.17 |
---|---|
[MC++๋ฆฌํฌํธ] (0) | 2023.03.17 |
[IPC] heap-use-after-free crash (0) | 2023.03.17 |
๋ฌธ์ ํ์ด ๋ณด๊ณ ์(๊ณผ์ ์ ๋ฆฌ) (0) | 2023.03.17 |
์ ๋์ฝ๋ ํ ์คํธ ๋ณํ (0) | 2023.03.17 |