#table #rainbow #hash #crypto #cryptanalysis

rbtables

快速且可扩展的彩虹表实现

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密码学

MIT 许可证

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