本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,技术干货文章、学习资料、一线大厂面试经验等应有尽有,欢迎 Star 和 完善。
一、加密
加密技术无处不在。
最常见的就是我们每天都在使用的密码。
登陆微信、淘宝,我们所使用的密码,就是加密存储在数据库中的。
加密技术可以保障我们密码的安全性。
如果这些密码在数据库中是以明文形式存储的,那安全隐患就太大了。
一旦数据库泄漏,就不光是一个账号被盗的问题了。
很可能是多个网站的账号同时被盗。
因为很多人的习惯是,各大网站都用相同的密码。
不过,这都 2020 年了,密码存储早已用上了不可逆的加密技术,例如 Bcrypt 加密等。同时,还有设备锁,安全性不用担心。
但这类加密算法的成本较高,并不适合所有的场景。
对于不太重要的数据,就可以使用一些低成本的加密和编码算法。
例如男人之间的“灵魂对话”。
这种加密对话,靠的是两人多年的默契,外人很难参透,无迹可寻。
而下面这种就不同了,加密和编码是有迹可循的。
今天,咱就用这个,基于深度学习的文本自动解密 Ciphey 算法,破一破这些有迹可循的加密和编码算法。
二、Ciphey
Ciphey 算法开源至今,已经获得 2.2k+ star,一度登上 Github 热榜。
每当遇到一些不知道加密方法和编码格式的文本,不妨试试 Ciphey ,说不定可以轻松解决你的烦恼。
简介
Ciphey 支持破解 6 种基础加密:
16 种编码:
哈希也支持,不过效果不可控。
现在临时关闭了,优化好后可能会重新开放。
项目地址:
https://github.com/Ciphey/Ciphey
原理
Ciphey 是将深度学习技术应用到特定的场景。
其实原理不难,就是对一段文本进行分类,判断其属于明文,还是哪种加密方法。
经过 softmax 输出每个类别的概率,然后从高到低开始遍历破解。
思路简单,但是由于涉及到特定应用领域,实现起来也挺复杂。
需要了解每种加密和编码算法的方法,以及破解和解码的方式。
三、算法测试
Ciphey 安装非常简单,直接使用 pip 安装即可:
1 | python -m pip install -U ciphey |
咱先来个简单的:
1 | amFjayBjdWk= |
这种编码结果,经常用 base64 的人一眼就能看出来。
使用 ciphey -t "amFjayBjdWk=" 命令,进行解码。
这种太小儿科,那咱换个难的。
1 | 3D6F57596A7447496A565861676B3263674D336267675759755232637631575A |
这种是基础加密算法和编码的组合,可以自己尝试解密,感受下难度。
而用 Ciphey ,轻松一秒内解密完成。
轻轻松松拿到结果的同时,还可以知道,这个字符串都用了什么加密和编码算法。
有 reverse cipher、base64、base16。
而实际,我也确实是这么做的:
1 2 3 4 5 6 7 8 9 10 11 | import base64 s = "jack cui is so handsome" print("原始:", s) s = s[::-1] print("reverse cipher:",s) s = base64.b64encode(s.encode()).decode() print("base64:", s) s = s[::-1] print("reverse ciper:", s) s = base64.b16encode(s.encode()).decode() print("base16:", s) |
先对字符串进行反转,再进行 base64 编码,将编码的结果再次反转,最后再加一个 base16 编码。
Ciphey 除了对这种加密字符串的解密,还可以针对整个文本。
可以使用如下命令,解密 encrypted.txt 文本里所有的内容。
1 | ciphey - encrypted.txt |
此外,还可以提供一个 wordlist ,辅助解密。
遇到这种加密和编码的场景,不妨试试这个,基于深度学习的文本自动解密 Ciphey 算法。
四、总结
Ciphey 要是支持的哈希解密稳定一些,那就更好了。
2020年8月15日 上午11:55 沙发
ciphey很厉害
2020年8月17日 上午9:06 板凳
这个太强了