Rust 示例:使用 sodiumoxide 生成公私钥对并保存到文件
这个简单的 Rust 程序演示了如何使用 sodiumoxide crate 生成公私钥对,并将密钥以 base64 格式保存到文件中。
src/main.rs
use sodiumoxide::crypto::sign;
use std::fs::File;
use std::io::Write;
use std::path::Path;
use base64::{Engine as _, engine::general_purpose};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 初始化 sodiumoxide
sodiumoxide::init().expect("初始化 sodiumoxide 失败");
// 生成新的密钥对
let (public_key, secret_key) = sign::gen_keypair();
// 将密钥转换为 base64
let public_key_b64 = general_purpose::STANDARD.encode(public_key.as_ref());
let secret_key_b64 = general_purpose::STANDARD.encode(secret_key.as_ref());
// 定义文件路径
let public_key_path = Path::new("public_key.b64");
let secret_key_path = Path::new("secret_key.b64");
// 将公钥保存到文件
let mut public_key_file = File::create(public_key_path)?;
public_key_file.write_all(public_key_b64.as_bytes())?;
// 将私钥保存到文件
let mut secret_key_file = File::create(secret_key_path)?;
secret_key_file.write_all(secret_key_b64.as_bytes())?;
println!("密钥对已成功生成并保存!");
println!("公钥已保存到:{:?}", public_key_path);
println!("私钥已保存到:{:?}", secret_key_path);
Ok(())
}Cargo.toml
[package]
name = "MakeKeyPair"
version = "0.1.0"
edition = "2021"
[dependencies]
sodiumoxide = "0.2"
base64 = "0.21"如何运行
run.sh
cargo run输出
output.txt
Public key saved to: "public_key.b64"
Secret key saved to: "secret_key.b64"Check out similar posts by category:
Cryptography, Rust
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow