Skip to content

kaolengmian7/enigma-machine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

恩尼格玛密码机的 Go 语言实现 🔐

若以今日之智慧,破解昨日之密码,我辈也当为图灵。

这是一个用 Go 语言实现的恩尼格玛密码机,拥有三个转子和十组飞线。

这是什么? 🤔

恩尼格玛(Enigma)是二战期间德国军方使用的加密设备。这台机器的密码系统最终被以艾伦·图灵为首的英国布莱切利园密码破译小组成功破解,成为了密码学历史上的重要里程碑。

想深入了解的可以看看:

如果你觉得看文档太枯燥,可以去看《模仿游戏》这部电影。 🎬

如何使用 🚀

首先,你得有个 Go 语言环境。

克隆下来,运行:

git clone https://github.com/kaolengmian7/enigma-machine.git
go run main.go

加密消息 🔒

就像德国人给总理发电报一样简单:

curl -X POST http://localhost:8080/api/encrypt \
-H "Content-Type: application/json" \
-d '{
    "message": "HELLO WORLD",
    "plugboard": ["AB", "CD", "EF", "GH", "IJ"],
    "positions": [1, 5, 9]
}'

返回:{"result":"YFNDZ AAEZV"}

解密消息 🔓

跟加密一样,只是接口不同:

curl -X POST http://localhost:8080/api/decrypt \
-H "Content-Type: application/json" \
-d '{
    "message": "ZYRXU PZFQI",
    "plugboard": ["AB", "CD", "EF", "GH", "IJ"],
    "positions": [1, 5, 9] 
}'

返回:{"result":"HELLO WORLD"}

plugboard 代表 10 组飞线,上面的例子中只有 5 组,可以自行添加剩下的 5 组。(如果你理解了 enigma 的原理,应该知道字母是不能重复的🐶)

positions 代表三个转子的初始位置,可以自行调整,范围为[0,26)。

一个小请求 ⭐

如果你觉得这个项目还不错,不妨给个 star。这年头,star 比德军的密码还难得到🐶。

破译

如果有大佬实现了破译代码,欢迎提交 mr 🎉

About

一个用 go 实现的 engima 机器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages