에라모르겠다(‘◇’)?
[python] RSA 복호화 본문
RSA 암호화란🤮 ?
RSA 암호는 공개키 암호 시스템의 하나로 ,암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘
- RSA는 두 개의 키를 사용한다. RSA는 암호화와 복호화를 위한 두 개의 서로 다른 키를 사용. 하나는 공개키(Public Key)이고, 다른 하나는 개인키(Private Key)
- 일반적으로 많은 공개키 알고리즘의 공개키(public key)는 모두에게 알려져 있으며 메시지를 암호화(encrypt)하는데 쓰이며(누구나 이를 이용하여 암호화 가능), 암호화된 메시지는 개인키(private key)를 가진 자만이 복호화(decrypt)하여 열어볼 수 있다.
- 공개키 알고리즘은 누구나 어떤 메시지를 암호화할 수 있지만, 그것을 해독하여 열람할 수 있는 사람은 개인키를 지닌 단 한 사람만이 존재한다는 점에서 대칭키 알고리즘과 차이를 가진다.
- RSA는 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 의미론적으로 안전한 암호화 시스템(semantically secure cryptosystem)을 보장하도록 디자인되어 있다.
from cryptography.hazmat.primitives.asymmetric import padding, rsa
from cryptography.hazmat.primitives import serialization, hashes
import base64
def decode_key(request)
private_key_path = 'path/to/private_key.pem' #private_key.pem 경로
encrypted_data_b64 = request.data.get('data') #postman으로 json형태로 send
# 비밀키 불러오기
with open(private_key_path, 'rb') as f:
private_key = serialization.load_pem_private_key(
f.read(),
password=None,
)
# 암호화된 데이터 디코딩
encrypted_data = base64.b64decode(encrypted_data_b64)
# RSA 비밀키를 사용하여 데이터 복호화
decrypted_data = private_key.decrypt(
encrypted_data,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 결과 출력
print(decrypted_data.decode('utf-8'))
json_data = json.loads(decrypted_data)
print(json_data)
'Language > Python' 카테고리의 다른 글
[Django] 스케줄러 등록 (0) | 2023.05.04 |
---|---|
[Django] pandas모듈을 이용한 json -> csv 파일 생성 (0) | 2023.05.03 |
[python] datetime을 이용한 microseconds <-> date 변환 (0) | 2023.05.03 |
[Django]시간을 value로 가지고 있는 json 데이터 마지막 시점 이후 데이터 저장하기 (0) | 2023.05.03 |
[Django] 장고 프로젝트 초기 설정 (0) | 2023.04.05 |
Comments