
Reine Rust-Bibliothek für RSA-Public-Key-Kryptografie: Schlüsselerzeugung, PKCS#1-v1.5- und OAEP-Ver-/Entschlüsselung, PSS-Signaturen sowie Schlüsselimport/-export.
Eine portable RSA-Implementierung in reinem Rust.
use rsa::{Pkcs1v15Encrypt, RsaPrivateKey, RsaPublicKey};
let mut rng = rand::rng();
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, Pkcs1v15Encrypt, &data[..]).expect("failed to encrypt");
assert_ne!(&data[..], &enc_data[..]);
// Decrypt
let dec_data = priv_key.decrypt(Pkcs1v15Encrypt, &enc_data).expect("failed to decrypt");
assert_eq!(&data[..], &dec_data[..]);
Hinweis: Falls Sie eine ungewöhnlich langsame Schlüsselerzeugung bei der Verwendung von
RsaPrivateKey::newfeststellen, können Sie versuchen, im Release-Modus zu kompilieren oder Folgendes zu IhrerCargo.tomlhinzuzufügen. Die Schlüsselerzeugung ist beim Erstellen mit höheren Optimierungsstufen viel schneller, dies erhöht jedoch die Kompilierzeit etwas.[profile.debug] opt-level = 3
Derzeit in Phase 1 (v) 🚧
Es wird drei Phasen geben, bevor 1.0 🚢 veröffentlicht werden kann.
Diese Crate hat ein Sicherheitsaudit von Include Security erhalten, mit nur einem geringfügigen Befund, der inzwischen behoben wurde.
Siehe die [offenen Sicherheitsprobleme] in unserem Issue-Tracker für andere bekannte Probleme.
Insbesondere ist die Implementierung der modularen Exponentiation [nicht konstantzeitig], aber die Timing-Variabilität wird durch [zufälliges Blinding] maskiert, eine häufig verwendete Technik. Diese Crate ist anfällig für den [Marvin-Angriff], der einem Netzwerkangreifer die Wiederherstellung des privaten Schlüssels ermöglichen könnte (siehe RUSTSEC-2023-0071).
Sie können unsere Arbeit zur Behebung dieses Problems in #390 verfolgen.
Diese Crate unterstützt Rust 1.85 oder höher.
In Zukunft kann die MSRV geändert werden, dies erfolgt jedoch mit einem Minor-Version-Sprung.
Lizenziert unter einer der folgenden Lizenzen:
nach Ihrer Wahl.
Sofern Sie nicht ausdrücklich etwas anderes angeben, wird jeder von Ihnen absichtlich zur Aufnahme in das Werk eingereichte Beitrag, wie in der Apache-2.0-Lizenz definiert, wie oben unter den Bedingungen der Doppellizenz lizenziert, ohne zusätzliche Bedingungen oder Konditionen.