8个版本 (5个破坏性更新)

使用旧Rust 2015

0.6.1 2021年4月17日
0.6.0 2021年4月16日
0.5.0 2017年3月15日
0.4.0 2017年3月13日
0.1.0 2016年11月15日

#714 in 文本处理

每月 25次下载

MIT 协议

1.5MB
721

ultra 构建状态 crates.io docs.rs 许可证

ultra 是一个 Enigma密码机 的Rust实现,包括解密密文的能力。

安装

ultra 可以通过Cargo从 crates.io 安装

$ cargo install ultra

用法

使用转子 1-4-2,密钥设置 D-O-G,以及环设置 C-A-T 加密一条消息

$ ultra --rotor=142 --key=DOG --ring=CAT "The quick brown fox jumps over the lazy dog."
Ntz ntqlz jmwll art bbnow wzqk keq ievk lzo.

使用随机Enigma设置加密一条消息

$ ultra --randomize "The quick brown fox jumps over the lazy dog."
Kxj mcwzf oqgmz pwr vnfqq iwhv wcr qqgt lgd.
> Rotors: 5-2-3 / Key: A-A-G / Ring: N-W-Q / Plugs: CG EZ HW IJ MP TY

尝试解密一段密文

$ ultra --decrypt "$(cat ciphertext.txt)"
...

解密依赖于 碰撞指数、二元组和四元组的频率组合,以推断原始Enigma密码机设置,因此,消息长度小于500个字符的情况下,正确解密的可能性相当低。

参考文献

本项目的原始版本基于James Lyons关于恩尼格玛机的文章(参见这篇博客文章以了解简要概述)。从版本0.6.0开始,解密算法得到了更新,受到了这个Computerphile视频的启发。

许可证

ultra遵循MIT许可证

依赖项

~3MB
~49K SLoC