You can download this code by clicking the button below.
This code is now available for download.
This code generates an RSA key pair, signs data with the private key, and verifies the signature with the public key. It uses the RSA key generation, signing, and verification features from the cryptography library.
Technology Stack : Cryptography library, RSA key generation, signing, and verification
Code Type : Function
Code Difficulty : Advanced
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
import os
def generate_rsa_keys(key_size=2048):
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=key_size,
)
public_key = private_key.public_key()
return private_key, public_key
def sign_data(data, private_key):
signature = private_key.sign(
data,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
return signature
def verify_signature(data, signature, public_key):
try:
public_key.verify(
signature,
data,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
return True
except Exception as e:
return False