#sha-256 #fuzzy #bits #term #input #byte #operations

nightly mostinefficientsha

使用模糊位实现的Rust中的SHA256实现

1 个不稳定版本

使用旧的Rust 2015

0.1.0 2016年9月6日

#65 in #sha-256

CC-BY-SA-4.0

65KB
1K SLoC

Rust 1K SLoC // 0.0% comments C 137 SLoC // 0.1% comments

最不高效的Sha

文档

这个crate试图破解SHA256。(但不幸失败了^^)。

它以最不高效的方式实现了SHA-256。通常,SHA-256在32位整数(u32)上操作。这个实现使用一个双精度浮点数(f64)来表示每个整数的每个位,从而允许每个输入字节使用8个模糊输入位。

基准测试

处理器:Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz,3072KB缓存

  • 计算包含一个字节输入数据的SHA256需要10毫秒。
  • 计算包含一百字节输入数据的SHA256需要78毫秒。

为什么

为了好玩。这看起来不太可能成功,但我想做一些Rust。


lib.rs:

这个crate试图破解SHA256。(但不幸失败了)。

它以最不高效的方式实现了SHA-256。通常,SHA-256在32位整数(u32)上操作。这个实现使用一个双精度浮点数(f64)来表示每个整数的每个位,从而允许每个输入字节使用8个模糊输入位。

Term 表示一个模糊位,要么作为一个可设置的位(常量或符号),要么作为其他 Term 的位运算组合,从而创建一个 Term 的树状图。这些术语是懒加载评估的。

U 结合了32个 Term,表示一个模糊整数。U还实现了高级操作,如移位、旋转、加法。这些操作将转换为模糊的懒加载位操作。

Sha256 使用这些 U 来计算SHA-256算法。

Linopt 使用模糊的 Sha256 来尝试破解它。没有机会。

依赖项

~435KB