2个稳定版本
1.0.1 | 2021年12月9日 |
---|
#7 in #passwd
2,942 monthly downloads
16KB
248 行
Tor控制端口号密码加密和解密
Tor可以通过与“ControlPort”建立套接字连接来控制,通常在端口9051。
.torrc
需要“HashedControlPassword”选项来使用密码认证。您可以在命令行中运行tor --hash-password <secret>
来生成此值。此模块提供了与独立Rust库相同的功能。
盐化哈希是根据RFC 2440(OpenPGP)中的S2K算法计算的,并带有s2k指定符前缀。然后以十六进制编码,前面带有指示序列“16:”。
例如,密码'foo'可以编码为
16:660537E3E1CD4999 60 44A3BF558097A981F539FEA2F9DA662B4626C1C2
++++++++++++++++ ** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
salt indicator hashed value
示例用法
要生成Tor密码,请使用hash_password
。您可以使用verify
来验证对哈希的挑战
use tor_hash_passwd::EncryptedKey;
let hash = EncryptedKey::hash_password("ride the wild Pony");
assert!(hash.validate("ride the wild Pony"));
assert!(!hash.validate("some other password"));
算法使用随机盐,因此多次生成相同的哈希密码将产生不同的哈希。要获得可重复的哈希,您必须提供盐
use tor_hash_passwd::EncryptedKey;
use hex_literal::hex;
let key = EncryptedKey::hash_with_salt("foo", hex!("85EE955FF128F012"));
assert_eq!(key.to_string().as_str(), "16:85EE955FF128F01260A1CFA5C3BE947A512B8EFAD1BC410671E3DBBA2D");
您还可以将字符串转换为加密密钥
use std::convert::TryFrom;
use tor_hash_passwd::EncryptedKey;
let key = EncryptedKey::try_from("16:29AAD7BADA64895D604EE18A5549712C9DADAF373B72D7DEF0D4AE97AE").unwrap();
assert!(key.validate("tari"));
依赖项
~0.6–1.1MB
~24K SLoC