Генератор Пары Ключей 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.