4 个版本 (重大更改)
0.5.0 | 2023年3月18日 |
---|---|
0.4.0 | 2023年2月14日 |
0.3.0 | 2022年12月23日 |
0.2.0 | 2022年12月20日 |
在 无标准库 中排名第 189
每月下载量 22 次
被 3 个 Crates 使用
35KB
707 代码行
概述
有关此库的设计哲学的序言,请参阅 GitHub 项目页面。
psh
是一个密码生成和密码管理库,它可以为用户输入生成确定性密码。它可以将以前使用的别名及其密码推导设置以加密形式存储在其内部数据库中,数据库位于 $HOME/.psh.db
。
有一个二进制 crate psh-cli
-- 一个利用 psh
功能的 CLI 工具。可以使用以下 cargo
命令安装
$ cargo install psh-cli
以下是如何在您的代码中使用 psh
的示例
use psh::{Psh, ZeroizingString, store::PshMemDb};
let master_password = ZeroizingString::new(
"this_better_be_a_strong_password".to_string());
let psh = Psh::new(
master_password,
PshMemDb::new(),
).expect("Error initializing Psh");
let alias = ZeroizingString::new(
"my_secret_box".to_string());
let password = psh.derive_password(&alias, None, None);
为了提高安全性,可以提供秘密
# use psh::{Psh, ZeroizingString, store::PshMemDb};
#
# let master_password = ZeroizingString::new(
# "this_better_be_a_strong_password".to_string());
# let psh = Psh::new(
# master_password,
# PshMemDb::new(),
# ).expect("Error initializing Psh");
# let alias = ZeroizingString::new(
# "my_secret_box".to_string());
let secret = ZeroizingString::new(
"an_easy_to_remember_secret_word".to_string());
let password = psh.derive_password(&alias, Some(secret), None);
derive_password()
的第三个参数是 CharSet
# use psh::{Psh, ZeroizingString, store::PshMemDb};
use psh::CharSet;
#
# let master_password = ZeroizingString::new(
# "this_better_be_a_strong_password".to_string());
# let psh = Psh::new(
# master_password,
# PshMemDb::new(),
# ).expect("Error initializing Psh");
# let alias = ZeroizingString::new(
# "my_secret_box".to_string());
// This password should consist of [a-zA-Z0-9] characters only
let password = psh.derive_password(&alias, None, Some(CharSet::Reduced));
将别名及其设置存储/删除到/从 psh
数据库中
# use psh::{CharSet, Psh, ZeroizingString, store::PshMemDb};
#
# let master_password = ZeroizingString::new(
# "this_better_be_a_strong_password".to_string());
let mut psh = Psh::new(
master_password,
PshMemDb::new(),
).expect("Error initializing Psh");
# let alias = ZeroizingString::new(
# "my_secret_box".to_string());
let use_secret = true;
let charset = CharSet::RequireAll;
// Store alias
psh.append_alias_to_db(&alias, Some(use_secret), Some(charset))
.expect("Error storing alias");
// Remove alias
psh.remove_alias_from_db(&alias)
.expect("Error removing alias");
请注意,在上述示例中,使用了内存中的 PshMemDb
作为数据库后端。还有其他可用的后端:使用普通文件的 psh_db::PshDb
以及使用 LocalStorage Web API 的 psh_webdb::PshWebDb
。
依赖项
~4MB
~82K SLoC