언어/python

python3 rsa public key 사용하여 encrypt 하기

Soyeon0111 2021. 7. 18. 23:11
반응형

RSA 암호화란..

더보기

RSA 암호화는 Public key(공개키)로 메시지를 암호화 하고, Private key(개인키)로 메시지를 복호화 하는 방법이다. 
public key는 누구에게나 공개된 '공개키' 이고, 암호화 된 텍스트를 만드는 것은 누구나 (마음만 먹으면) 가능하다.
그리고 private key로만 이 암호화 된 텍스트를 복호화 가능하다. 

- 아래는 위키백과 내용
메시지와 공개키 모두를 알 수 있다면 변조된 메시지를 보낼 수 있기 때문에, 
실제로는 수신측의 공개키만을 사용하여 암호화하는 경우는 드물다. 송수신 양측의 키쌍을 사용하는 방법으로는 A의 개인키로 암호화 -> B의 공개키로 암호화 한 메시지를 전달하고 복호화 과정은 B의 개인키로 복호화 -> A의 공개키로 복호화로 구성된 방식이 일반적이다. 

더 자세한 내용은 나도 모름.. 검색 ㄱ

 

회사에서 plain text를 공개키를 이용하여 암호화 된 text로 변환하는 간단한 프로그램을 작성하는 일이 있었다.

python rsa public key encrypt 라는 키워드로 엄청 검색했었는데.. 

그들이 말해주는 답변 대부분은 작동을 안하는 거다..

 

제일 해맸던 부분은 pycryto 패키지 설치.. pip install pycrypto 명령을 치면 계속 에러가 나는거다.

여러개 검색한 결과 pycrypto 지원은 이제 끝났고 이제 python3에서는 pycryptodome 패키지를 사용한다고 한다.

pip install pycryptodome

그런데 window 에서 작업하려고 하니 계속 c++ 관련 에러가 난다.

c++ 컴파일러 설치 후 에러는 해결되었다. 

 

아래는 텍스트파일로 저장된 Public key를 읽어 평문을 암호화 시키는 코드이다. 

import sys
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_PKCS1_v1_5
from base64 import b64decode,b64encode

# Get public key from a file
pubkey_file = open("publickey.pem", 'r')
pubkey = pubkey_file.read()
pubkey_file.close()

# Plain Text
msg = "plain text"           

# Create key using public key
keyPub = RSA.importKey(pubkey)
cipher = Cipher_PKCS1_v1_5.new(keyPub)
cipher_text = cipher.encrypt(msg.encode())
emsg = b64encode(cipher_text)
encryptedText = emsg.decode('utf-8')

# Encrypted Text
print("Encrypted text : ", encryptedText )

 

 

오늘도.. 미래의 나를 위한 백업 완료!

반응형