feat: add example - rsa_encrypt
This commit is contained in:
37
examples/rsa_encrypt.rs
Normal file
37
examples/rsa_encrypt.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
use openssl::encrypt::Encrypter;
|
||||
use openssl::pkey::PKey;
|
||||
use openssl::rsa::{Padding, Rsa};
|
||||
use rust_util::information;
|
||||
|
||||
fn main() {
|
||||
let data = b"hello, world!";
|
||||
let rsa = Rsa::public_key_from_pem(
|
||||
b"-----BEGIN PUBLIC KEY-----
|
||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApUM8M+QRMUw0dIvXISFx
|
||||
43j4h9CK38Y9HD6kPcc3Z0dCGPiFy7Ze0OQebPWHyUZ2YmqsdyzFuOQuV9P2pxxj
|
||||
/WLIgRqZV8Jk8tWhtAjOOvm0MTc2rg+EJHfa+zhX4eFEMsj4DvQBMJDXiKnpXTM/
|
||||
j7oMKpIUQHqfXBwsEJHLmHZTLeEBEYKcZXTAmuu3WdxK5jvEc02Xt2hZ1fBs0M9e
|
||||
/2EMe3t69aH4/rabiBjF2h9Jde15wrJMxXaCCWJqYhbBS0CJ3BdjkAqOIpcqPXva
|
||||
xiJN1pNpK8ejA9Q4Nmx7pxnvfv+hCPkWXZS3r/BWZ9lFZc8uErQEbB4gLgko8jOl
|
||||
fQF7cYqtZEs69qY8nnIUBsqZYfAp+bQd2xCFSbEZAl+OrtGzfVjD9YFMPy02+xRg
|
||||
v2N3KT3KHHvuU7WxrvffrshP2fwDuG2MBlmcq1suAKxA0cYPSyajceEqw/3ogSp7
|
||||
7SYx41rT8EWLmTvU0CHzCsuf/O7sDWZRfxatAzWhBBhnKCPqzizpOQOqm8XhCt74
|
||||
FfnabPpHM9XUjoQIPrTssyS3eWqynzJiAqez6v2LK2fhL7IkcLtvt5p59Y+KY4I6
|
||||
YQ09iUh7lKJHRhkgTomUurJHieVHMWFGIHofEC+nU6pGIUh0P7Nr0Gz45GJTwWGd
|
||||
hW53WfImja+b5kwwyqUikyMCAwEAAQ==
|
||||
-----END PUBLIC KEY-----");
|
||||
let pub_key = PKey::from_rsa(rsa.unwrap()).unwrap();
|
||||
|
||||
// Encrypt the data with RSA PKCS1
|
||||
let mut encrypter = Encrypter::new(&pub_key).unwrap();
|
||||
encrypter.set_rsa_padding(Padding::PKCS1).unwrap();
|
||||
// Create an output buffer
|
||||
let buffer_len = encrypter.encrypt_len(data).unwrap();
|
||||
let mut encrypted = vec![0; buffer_len];
|
||||
// Encrypt and truncate the buffer
|
||||
let encrypted_len = encrypter.encrypt(data, &mut encrypted).unwrap();
|
||||
encrypted.truncate(encrypted_len);
|
||||
|
||||
information!("Clear text: {}", String::from_utf8_lossy(data));
|
||||
information!("Encrypted message base64: {}", base64::encode(&encrypted));
|
||||
}
|
||||
Reference in New Issue
Block a user