RSA 암호화 구현 with 파이썬
2022. 11. 6. 22:52ㆍ코딩
반응형
import base64
import math
from Crypto.Util.number import getPrime
def gcd(p, q):
x = math.gcd(p,q)
return x
def lcm(p, q):
l = math.lcm(p,q)
return l
def pubkey_e(l):
e = 2
while e < l and gcd(e,l) != 1:
e += 1
return e
def pubkey_n(p,q):
n = p * q
print("public key n : " + str(n))
return n
def prikey_d(e,l):
d = 1
while (e*d) % l != 1 or d == e:
d += 1
return d
def rsa_enc(e,n,m):
C = (int(m)**e)%n
enc_message_ascii = str(C).encode('ascii')
enc_message_ascii_to_b64 = (base64.b64encode(enc_message_ascii)).decode('utf-8')
print("rsa 암호화문 :" + str(enc_message_ascii_to_b64))
return C
def rsa_dec(C,d,n):
dec_message = (int(C)**d)%n
#render_decode = int.to_bytes(dec_message,len(str(dec_message)),'big')
print(dec_message)
#render_decode_message = render_decode.decode('utf-8')
#print("rsa 복호화문 :" + str(render_decode_message))
#return render_decode_message
def main():
p = 11
q = 3
n = pubkey_n(p,q)
l = lcm(p-1,q-1)
print("secret value : " + str(l))
e = pubkey_e(l)
print("public key e : " +str(e))
d = prikey_d(e,l)
print("private key d : " + str(d))
m = input("평문 입력 :")
C = rsa_enc(e,n,m)
print(C)
rsa_dec(C,d,n)
if __name__ == "__main__":
main()
반응형
'코딩' 카테고리의 다른 글
스택프레임 시각화 - ( StackFrame visualization) (0) | 2023.01.15 |
---|---|
file in file (0) | 2022.11.26 |
코드업 C언어 100제 클리어 (2) | 2022.09.15 |
개발 완료 ( To do List ) (0) | 2022.07.25 |
개발 계획 ( To do List ) (0) | 2022.07.19 |