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.