
信息加密和信息隐藏是实现信息安全与保密的主要手段。除了一些经典的加密解密算法和自己设计的加密算法之外,我们还可以充分利用Python标准库和扩展库提供的丰富功能来辅助我们完成信息加密解密实现。本文收集了6个常用的Python密码学编程库以供参考。
1、Hashids
Hashids是一个非常小巧的跨语言的开源库,它用来把数字编码成一个随机字符串, 并轻松通过key解码回来。这对于将多个参数捆绑到一个参数中或仅将其用作简短的uid非常有用。著名的Youtube网站就是用Hashids把网站数据库id搞乱,让它失去顺序性,无法直接遍历,从而提高爬虫的门槛。

官网:Hashids
2、Paramiko
Paramiko是用于建立 SSH2 连接(客户端或服务器)的Python库。重点是使用 SSH2 作为 SSL 的替代方法,以在 python 脚本之间建立安全连接,以实现远程命令执行、文件传输、中间SSH代理等功能。Paramiko支持所有主要密码和哈希方法。也支持 SFTP 客户端和服务器模式。

官网:Welcome to Paramiko!
3、Passlib
Passlib是基于Python2&3的密码散列库,它提供了30多种密码散列算法的跨平台实现,以及管理现有密码散列的框架。它被设计成可用于广泛的任务,包括从验证/etc/shadow中的散列密码到为多用户应用程序提供高强度密码散列算法。

官网:Passlib 1.7.4 documentation
4、PyNaCl
PyNaCl是libsodium库的Python实现。libsodium是一个基于NaCI开发的先进而且易用的加密库,主要用于加密、解密、签名和生成密码哈希等。PyNaCI能够提供数字签名、密钥加密、公钥加密、哈希和消息身份验证、基于密码的密钥派生和密码散列功能。

Github:pyca/pynacl
5、Cryptography
Cryptography密码库的目标是成为”人类易于使用的密码学包“,它包括The hazardous materials layer和The recipes layer两个部分。The hazardous materials(低级密码学原语)提供了基本的密码概念,如加密、签名、Hash等算法,但是直接使用密码学原语容易出错。所以Cryptography库对密码学原语进行了安全集成,形成了更高层次的The recipes layer (密码学菜谱)。通过其集成的对称密码函数Fernet,我们可以轻松实现对称加密。

官网:Welcome to pyca/cryptography - Cryptography 3.4.dev1 documentation
6、Pycrypto
Pycrypto(Python 密码学工具箱),可以说是密码学编程库中最成功也是最成熟的一个,它提供了MD5、SHA、HMAC等多个安全哈希算法,以及DES、AES、ARC4、RSA、DSA、ElGamal等多个加密算法和数字签名算法的实现,并提供了很多有用的模块和函数(如长字符串转换、随机数生成、数论函数等)。

官网:PyCrypto - The Python Cryptography Toolkit
关于Python密码学
整理这篇文章,是为了更好的学习了解Python的加密解密实现,以备不时之需。而真正去使用,需要有一定Python和密码学基础。如果对密码学有兴趣,并想真正去搞懂学透的话,还是建议从基本的密码学原理和加密解密算法原理入手,推荐我入门学习的一本书,人民邮电出版社的《Python密码学编程》,学习下来还蛮有趣的。