19 lines
683 B
Rust
19 lines
683 B
Rust
use rsa::{PublicKey, RSAPublicKey, RSAPrivateKey, PaddingScheme};
|
|
use rand::rngs::OsRng;
|
|
|
|
fn main() {
|
|
let mut rng = OsRng;
|
|
let bits = 2048;
|
|
let priv_key = RSAPrivateKey::new(&mut rng, bits).expect("failed to generate a key");
|
|
let pub_key = RSAPublicKey::from(&priv_key);
|
|
|
|
// Encrypt
|
|
let data = b"hello world";
|
|
let enc_data = pub_key.encrypt(&mut rng, PaddingScheme::new_pkcs1v15_encrypt(), &data[..]).expect("failed to encrypt");
|
|
assert_ne!(&data[..], &enc_data[..]);
|
|
|
|
// Decrypt
|
|
let dec_data = priv_key.decrypt(PaddingScheme::new_pkcs1v15_encrypt(), &enc_data).expect("failed to decrypt");
|
|
assert_eq!(&data[..], &dec_data[..]);
|
|
}
|