4个版本 (2个破坏性更新)
0.4.0 | 2024年7月1日 |
---|---|
0.3.2 | 2023年9月28日 |
0.3.1 | 2023年9月21日 |
0.1.0 | 2023年9月11日 |
#2316 in 加密学
199 每月下载量
用于 seed-keeper
13KB
195 行
Seed Keeper Core
Seed Keeper Core是一个用于派生和加密密钥和种子的Rust库。
使用Argon2、AES密钥加密键
- 从用户名和密码(盐和口令)派生密钥。
- 生成一个默认情况下会清零内存的随机种子。
- 使用密钥加密种子,并解密。
往返使用
use seed_keeper_core::{derive_key}; // the main purpose of this library
use seed_keeper_core::wrap::{encrypt, decrypt}; // utils to encrypt and decrypt the seed
use seed_keeper_core::seed::{Seed, rand_seed}; // utils to generate a random seed
use seed_keeper_core::Zeroizing;
// Generate a secure random seed of 32 bytes:
let seed = rand_seed();
assert_eq!(seed.len(), 32);
// Derive key material from a username (salt) and password:
let password = "some random words that you made up, for sure!".to_string();
let salt = b"[email protected]"; // Salt should be unique per password
let key = derive_key(&password, salt).unwrap();
assert_eq!(
key.as_ref(),
[
164, 103, 254, 113, 126, 241, 57, 240, 100, 56, 243, 125, 155, 224, 40, 242, 178,
136, 222, 133, 220, 141, 127, 10, 88, 199, 181, 11, 241, 91, 149, 249
]
);
// Protect your new seed by encrypting it with the password and salt key:
let encrypted = encrypt(key.clone(), seed.clone()).unwrap();
let decrypted = decrypt(key.clone(), &encrypted).unwrap();
assert_eq!(*seed, *decrypted.as_slice());
依赖项
~1.5–2MB
~44K SLoC