【发布时间】:2021-11-21 23:21:34
【问题描述】:
我正在关注这个tutorial,我希望它生成和使用 RSA 私钥和公钥并加密/解密文本并打印它,现在我想在程序中看到这些密钥,这是我得到了:
fn print_type_of<T>(_: &T) {
println!("{}", std::any::type_name::<T>())
}
fn main() {
use rsa::{PublicKey, RsaPrivateKey, RsaPublicKey, PaddingScheme};
use rand::rngs::OsRng;
let mut rng = OsRng{};
let bits = 2048;
let private_key = RsaPrivateKey::new(&mut rng, bits).expect("failed to generate a key");
let public_key = RsaPublicKey::from(&private_key);
print_type_of(&public_key);
println!("{:?}",public_key);
println!("Public key: {}", String::from_utf8(public_key).unwrap());
}
我明白了:
error[E0308]: mismatched types
--> src/main.rs:21:47
|
21 | println!("Public key: {}", String::from_utf8(public_key).unwrap());
| ^^^^^^^^^^ expected struct `Vec`, found struct `rsa::RsaPublicKey`
|
= note: expected struct `Vec<u8>`
found struct `rsa::RsaPublicKey`
如果我删除展开线:
rsa::key::RsaPublicKey
RsaPublicKey { n: BigUint { data: [9176583044655610753, 8052921767573809665, 7322363310924215903, 10677358141470723739, 12379608428747184411, 6263963070332523975, 5963846880211652521, 16864047741974290629, 213896623420857268, 4937645776431077684, 15969812743294577757, 13867032477882121383, 5383248258773390155, 14444169918078759013, 9044709521184374311, 9755296615001295698, 18343743949489547843, 12343850134323169490, 16855493837721939000, 14970248798399036434, 16075416073667271075, 9024185634616256000, 14707399524398597897, 11804989747190776592, 11692677034154985673, 10043641354879364290, 2996813664869425496, 3933982337995406743, 15967428092655221732, 12491687912286251425, 2181688508710390266, 14829946030052214341] }, e: BigUint { data: [65537] } }
我如何将这个Big integer 公钥打印到 PEM 中,就像程序中的字符一样?
PS : Playgound 显示另一个错误!
rand = "=0.8"
rsa= "=0.5.0"
【问题讨论】:
标签: encryption rust rsa