Key 파일 생성
from Crypto.PublicKey import RSA
def make_key():
key = RSA.generate(1024) # 1024비트의 RSA 키를 생성
public_key = key.publickey().exportKey() # 공개키 추출
private_key = key.exportKey() # 개인키 추출
with open('public_key.pem', 'wb') as f: # 파일 저장
f.write(public_key)
with open('private_key.pem', 'wb') as f:
f.write(private_key)
make_key()
이 키 파일들을 이용해 아래와 같이 암호화와 복호화를 한다.
암호화
import base64
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
def encrypt():
""" 암호화 """
msg=b'i love you!'
#공개키 추출
fr = open('publick_key.pem', 'rb')
pu_key = fr.read()
fr.close()
key = RSA.importKey(pu_key)
#암호화
rsa = PKCS1_OAEP.new(key)
msg_en = rsa.encrypt(msg)
#암호화된 문자열을 base64로 인코딩
msg_en_b64 = base64.b64encode(msg_en)
print(msg_en_b64)
encrypt()
복호화
import base64
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
def decrypt():
""" 복호화 """
msg_en_b64 = b'암호문'
#base64로 인코딩한 문자열을 디코딩
msg_en = base64.b64decode(msg_en_b64)
#개인키 추출
fr = open('private_key.pem', 'rb')
pr_key = fr.read()
fr.close()
key = RSA.importKey(pr_key)
#복호화
rsa = PKCS1_OAEP.new(key)
msg_dec = rsa.decrypt(msg_en)
print(msg_dec)
decrypt()
'Security > Web' 카테고리의 다른 글
| [Web] Same Origin Policy(SOP) (0) | 2023.04.20 |
|---|---|
| [SQL Injection] 로그인 CASE와 우회방법 (0) | 2023.04.16 |
| 로그인 인증 로직 (0) | 2023.04.10 |
| [Wargame] [Python] 미스터 브루트 (0) | 2023.04.09 |
| XOR 연산을 이용한 암호화 / 복호화 / 공격 (0) | 2023.04.05 |