#enigma #shark #unix #rotor #machine #friendly

bin+lib enigma_shark

UNIX友好型CLI Enigma

1 个不稳定版本

0.1.0 2023年10月22日

#526 in 配置

GPL-3.0许可证

175KB
603

shark

这是一个名为“1942年鲨鱼黑障”的CLI Enigma工具,当时Kriegsmarine在其Enigma机器中增加了第四个转子,使布莱切利公园在近10个月内无法破解大西洋U艇通信。

安装

系统范围

$ curl -sSL https://github.com/mattlianje/shark/blob/main/install.sh | bash

# Checks system wide install was successful 
$ enigma --help

构建源代码

$ git clone https://github.com/mattlianje/shark.git
$ cd shark
$ cargo build --release
$ echo "HELLOWORLD" | ./target/release/enigma
# Will output
ZWMRGTTIIZ

使用

# Chain enigma with other commands
$ echo "HELLO" | enigma | grep "FOO"

# Use your custom settings
$ cat config.json
{
    "rotors": [
        {"type_": "type_i", "position": "A", "ring_setting": "A"},
        {"type_": "type_ii", "position": "B", "ring_setting": "A"},
        {"type_": "type_iii", "position": "C", "ring_setting": "A"}
    ],
    "reflector": "ukw_b",
    "plugboard": [{"from": "A", "to": "B"}]
}

# Use these settings easily
$ enigma --input plaintext.txt --config config.json > encrypted.txt

功能/目标

  • UNIX哲学遵循:Shark专注于做好一件事:加密。

  • 惊人的速度:主要为了学习Rust而构建,我将继续降低shark的内存占用并利用Rust的并发性。Shark以块的形式处理数据,使其适用于大数据集,在5MB输入上比其他C++ cli enigmas快50多倍。

5MB数据的加密时间

工具 时间(毫秒)
shark 53
C++ cli 2693
  • 无限流能力:设计时考虑到流数据,Shark可以处理无限数据流,允许进行实时加密任务。

依赖项

~1.8–3MB
~54K SLoC