4个版本
使用旧的Rust 2015
0.1.4 | 2018年9月4日 |
---|---|
0.1.3 | 2018年9月4日 |
0.1.2 | 2018年9月4日 |
0.1.1 | 2018年1月9日 |
#1157 在 密码学 中
14KB
214 行
rbtables
rbtables是Rust中彩虹表的一个快速、轻量级和可扩展的实现。它旨在作为API来支持彩虹表的通用用例。用户需要提供哈希和归约函数。
用法
首先,实现包含函数 Hasher
的特质,该函数包含 digest(&self, plaintext : &str) -> String
的特质。这个函数接受任意明文字符串,并应该产生一个十六进制编码的摘要字符串。例如,这个例子生成了一个明文的MD5散列的十六进制编码
use rbtables::prelude::Hasher;
struct MD5Hasher;
impl Hasher for MD5Hasher {
fn digest(&self, plaintext : &str) -> String {
format!("{:x}", md5::compute(plaintext.as_bytes()))
}
}
接下来,你需要通过实现 Reducer
特质来创建一组归约函数。你必须实现函数 reduce(&self, hash : &str) -> String
,该函数接受哈希器的输出,并应该产生另一个明文字符串。一个简单的例子是取哈希的十六进制编码的前 n
个字符
use rbtables::prelude::Reducer;
struct SubstringReducer {
n: usize
}
impl Reducer for SubstringReducer {
fn reduce(&self, hash : &str) -> String {
String::from(&hash[..self.n])
}
}
之后,你可以通过提供哈希器和一组归约函数来构建一个彩虹表。彩虹表需要提供种子值,这些值将确定表的有效性以及归约函数。
有关更多信息,请参阅crates.io 文档。
依赖关系
~105KB