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次下载
1.5MB
721 行
ultra
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