From bd2388c295c4d6a41bd297387cea4146c822bca0 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sun, 18 Oct 2026 13:11:43 -0700 Subject: [PATCH] README.md: change encryption example to use OAEP PKCS#1 v1.5 encryption is fundamentally broken (see #637) due to Bleichenbacher attacks, and `draft-irtf-cfrg-rsa-guidance` suggests we get rid of it entirely. At the very least, we can stop using it in the README.md example --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index aafe20d0..21164d6b 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,8 @@ See the security warning below for known implementation vulnerabilities. ## Example ```rust -use rsa::{Pkcs1v15Encrypt, RsaPrivateKey, RsaPublicKey}; +use rsa::{Oaep, RsaPrivateKey, RsaPublicKey}; +use sha2::Sha256; let mut rng = rand::rng(); let bits = 2048; @@ -35,11 +36,11 @@ let pub_key = RsaPublicKey::from(&priv_key); // Encrypt let data = b"hello world"; -let enc_data = pub_key.encrypt(&mut rng, Pkcs1v15Encrypt, &data[..]).expect("failed to encrypt"); +let enc_data = pub_key.encrypt(&mut rng, Oaep::::new(), &data[..]).expect("failed to encrypt"); assert_ne!(&data[..], &enc_data[..]); // Decrypt -let dec_data = priv_key.decrypt(Pkcs1v15Encrypt, &enc_data).expect("failed to decrypt"); +let dec_data = priv_key.decrypt_blinded(&mut rng, Oaep::::new(), &enc_data).expect("failed to decrypt"); assert_eq!(&data[..], &dec_data[..]); ```