RSA 키 쌍 생성기
RSA-2048 또는 RSA-4096 키 쌍을 PEM 형식으로 생성합니다.
키는 Web Crypto API를 사용하여 브라우저에서 완전히 생성되며 서버로 전송되지 않습니다.
이 도구 소개
RSA 키 쌍 생성기는 RSA(Rivest-Shamir-Adleman) 알고리즘을 기반으로 암호화용 공개 키와 복호화용 개인 키, 두 개의 수학적으로 연결된 암호화 키를 생성합니다. 이 키들은 인터넷상의 안전한 통신, 디지털 서명, 인증에 필수적입니다. 안전한 API를 구축하거나 인증서 기반 인증을 구현하거나 암호화된 메시징을 설정하든, 신뢰할 수 있는 RSA 키 생성기는 현대적 보안 인프라의 기초가 됩니다.
이 도구를 사용하려면 원하는 키 크기(RSA-2048 또는 RSA-4096)를 선택하고 생성을 클릭하기만 하면 표준 PEM 형식으로 두 키가 즉시 사용 가능한 상태로 생성됩니다. RSA-2048은 대부분의 애플리케이션에 적합하며 예견 가능한 미래에 강력한 보안을 제공하는 반면, RSA-4096은 약간 느린 작업을 대가로 추가적인 보안 마진을 제공합니다. 생성 후 각 키를 개별적으로 복사하여 애플리케이션, 설정 파일 또는 암호화 시스템에서 사용할 수 있습니다.
자주 묻는 질문
코드 구현
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.backends import default_backend
# Generate RSA key pair
def generate_rsa_key_pair(
key_size: int = 2048,
public_exponent: int = 65537,
) -> tuple[rsa.RSAPrivateKey, rsa.RSAPublicKey]:
private_key = rsa.generate_private_key(
public_exponent=public_exponent,
key_size=key_size,
backend=default_backend(),
)
return private_key, private_key.public_key()
# Serialize to PEM
def private_key_to_pem(key: rsa.RSAPrivateKey, password: bytes | None = None) -> str:
encryption = (
serialization.BestAvailableEncryption(password)
if password else serialization.NoEncryption()
)
return key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=encryption,
).decode()
def public_key_to_pem(key: rsa.RSAPublicKey) -> str:
return key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo,
).decode()
# Sign and verify
def sign(message: bytes, private_key: rsa.RSAPrivateKey) -> bytes:
return private_key.sign(message, padding.PKCS1v15(), hashes.SHA256())
def verify(message: bytes, signature: bytes, public_key: rsa.RSAPublicKey) -> bool:
try:
public_key.verify(signature, message, padding.PKCS1v15(), hashes.SHA256())
return True
except Exception:
return False
if __name__ == "__main__":
priv, pub = generate_rsa_key_pair(2048)
print(private_key_to_pem(priv))
print(public_key_to_pem(pub))
msg = b"Hello, RSA!"
sig = sign(msg, priv)
print("Signature valid:", verify(msg, sig, pub))Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.