Crate rsa[−][src]
Expand description
RSA Implementation in pure Rust.
Usage
Using PKCS1v15.
use rsa::{PublicKey, RSAPrivateKey, RSAPublicKey, PaddingScheme}; use rand::rngs::OsRng; let mut rng = OsRng; let bits = 2048; let private_key = RSAPrivateKey::new(&mut rng, bits).expect("failed to generate a key"); let public_key = RSAPublicKey::from(&private_key); // Encrypt let data = b"hello world"; let padding = PaddingScheme::new_pkcs1v15_encrypt(); let enc_data = public_key.encrypt(&mut rng, padding, &data[..]).expect("failed to encrypt"); assert_ne!(&data[..], &enc_data[..]); // Decrypt let padding = PaddingScheme::new_pkcs1v15_encrypt(); let dec_data = private_key.decrypt(padding, &enc_data).expect("failed to decrypt"); assert_eq!(&data[..], &dec_data[..]);
Using OAEP.
use rsa::{PublicKey, RSAPrivateKey, RSAPublicKey, PaddingScheme}; use rand::rngs::OsRng; let mut rng = OsRng; let bits = 2048; let private_key = RSAPrivateKey::new(&mut rng, bits).expect("failed to generate a key"); let public_key = RSAPublicKey::from(&private_key); // Encrypt let data = b"hello world"; let padding = PaddingScheme::new_oaep::<sha2::Sha256>(); let enc_data = public_key.encrypt(&mut rng, padding, &data[..]).expect("failed to encrypt"); assert_ne!(&data[..], &enc_data[..]); // Decrypt let padding = PaddingScheme::new_oaep::<sha2::Sha256>(); let dec_data = private_key.decrypt(padding, &enc_data).expect("failed to decrypt"); assert_eq!(&data[..], &dec_data[..]);
Re-exports
Modules
Useful algorithms.
Error types.
Supported hash functions.
Supported padding schemes.
Structs
A big unsigned integer type.
Represents a whole RSA key, public and private parts.
Represents the public part of an RSA key.
Traits
Trait for encoding the private key in the PKCS#1/PKCS#8 format
Trait for encoding the private key in the PEM format
Generic trait for operations on a public key.