太强了!基于深度学习的文本自动解密算法。
本文 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 安装即可:
python -m pip install -U ciphey
咱先来个简单的:
amFjayBjdWk=
这种编码结果,经常用 base64 的人一眼就能看出来。
使用 ciphey -t "amFjayBjdWk=" 命令,进行解码。
这种太小儿科,那咱换个难的。
3D6F57596A7447496A565861676B3263674D336267675759755232637631575A
这种是基础加密算法和编码的组合,可以自己尝试解密,感受下难度。
而用 Ciphey ,轻松一秒内解密完成。
轻轻松松拿到结果的同时,还可以知道,这个字符串都用了什么加密和编码算法。
有 reverse cipher、base64、base16。
而实际,我也确实是这么做的:
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 文本里所有的内容。
ciphey - encrypted.txt
此外,还可以提供一个 wordlist ,辅助解密。
遇到这种加密和编码的场景,不妨试试这个,基于深度学习的文本自动解密 Ciphey 算法。
四、总结
Ciphey 要是支持的哈希解密稳定一些,那就更好了。
- ASM 翻译系列第二十二弹:ASM Internal ASM file number 8
- Ghost安装Win7/XP后自动恢复IP的批处理
- ASM 翻译系列第二十三弹:ASM Internal ASM files number 12 and 254
- Shell脚本的简单排错法及调试程序bashdb
- ASM 翻译系列第二十四弹:ASM Internal ASM files number 10 and 11
- Redhat设置NFS挂载的简单步骤
- WordPress后台首页显示RSS错误的解决办法
- ASM 翻译系列第十九弹:ASM Internal ASM Continuing Operations Directory
- ASM 翻译系列第二十五弹:ASM 高级知识 When will my rebalance complete
- ASM 翻译系列第二十六弹:ASM 高级知识 Where is my data
- LVS+Keepalived负载均衡主备&双主架构全攻略
- ASM 翻译系列第二十八弹:ASM INTERNAL Partnership and Status Table
- ASM 翻译系列第二十九弹:ASM INTERNAL Free Space Table
- MySql常用30种SQL查询语句优化方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
- YII框架行为behaviors用法示例
- 浅谈Python里面None True False之间的区别
- python如何导入依赖包
- 深入理解Python 多线程
- Yii2框架自定义验证规则操作示例
- 浅析PHP 中move_uploaded_file 上传中文文件名失败
- 结束运行python的方法
- 解析Tensorflow之MNIST的使用
- 面向新手解析python Beautiful Soup基本用法
- 基于keras中的回调函数用法说明
- PHP实现读取文件夹及批量重命名文件操作示例
- Python多线程threading创建及使用方法解析
- django rest framework 过滤时间操作
- 浅谈TensorFlow之稀疏张量表示