2个稳定版本
1.1.0 | 2022年11月1日 |
---|---|
1.0.4 | 2022年10月26日 |
1.0.3 |
|
#2117 in 加密学
39KB
922 行
RSA-OAEP-PSS
RSA公钥密码系统的纯Rust实现。
以下功能可用
- 使用最优非对称加密填充(OAEP)进行加密
- 使用概率签名方案(PSS)进行签名
⚠️ 此包尚未经过任何同行审计,并且尚未准备好用于生产:我们鼓励您在使用之前仔细审查代码。
有用的链接
安装
将以下行添加到您的Cargo.toml
依赖项
[dependencies]
rsa-oaep-pss = "1"
查看crates.io页面以查看此包的最新版本。
如何使用?
密钥生成
let (public_key, private_key) = rsa_oaep_pss::generate_rsa_keys(&mut rng, 2048)
.expect("keys generation error");
使用OAEP方案进行加密
let message = b"some secret";
let mut oaep = rsa_oaep_pss::RsaOaep::new(rand::rngs::OsRng, &sha2::Sha256::new());
let ciphertext = oaep
.encrypt(&public_key, message)
.expect("encryption error");
let recovered = oaep
.decrypt(&private_key, &ciphertext)
.expect("decryption error");
assert_eq!(recovered, message);
使用PSS方案进行签名
let message = b"message to sign";
let mut pss = rsa_oaep_pss::RsaPss::new(rand::rngs::OsRng, &sha2::Sha256::new());
let signature = pss.sign(&private_key, message).expect("signature error");
let verification = pss.verify(&public_key, message, &signature);
assert!(verification.is_ok());
导入和导出密钥
use rsa_oaep_pss::{FromPem, ToPem};
let pem_public_key = std::fs::read_to_string("public.pem")?;
let public_key = RsaPublicKey::from_pem(&pem_public_key)?;
let re_exported_pem_public_key = public_key.to_pem()?;
assert_eq!(pem_public_key, re_exported_pem_public_key);
您还可以使用FromDer
和ToDer
处理原始DER数据。
运行示例
您可以通过以下命令运行examples
文件夹中的示例
cargo run --example <filename> --release
依赖项
~2.5MB
~47K SLoC