在自动化测试时,Python 常用的几个加密算法,你有用到吗
本文分享自华为云社区《『加密算法』| 自动化测试时基于Python常用的几个加密算法实现,你有用到吗?》,作者:虫无涯 。
写在前边
这几天做自动化测试,遇到一个问题,那就是接口的请求的密码是加密的;
产品的要求是不能使用其他特殊手段,他给提供加密算法,需要在接口请求的时候,使用加密算法处理后的数据传参;
其实这样来说反而简单了很多,因为已经知道加密算法,那就在传参前先把密码进行加密处理就行了(心理默默的想,这个产品也太好了吧);
本文主要是整理了几个加密算法,以便后续测试使用。
公用数据
为了方便后续举例,我们设计一个类,来把需要演示的加密算法统一封装起来:
其中 self.name 模拟用户名数据,self.password 模拟密码数据。
MD5 直接加密
MD5 是一种常用的单向散列函数,是不可逆的,也就是说无法通过被加密后的结果来确定加密前的内容;
生成结果为固定的 128 位字节,一般为 32 位的十六进制字符串;
这里会使用到 hashlib,这个一般 python 安装完都是有的,目录在:
直接加密实现:
输出为:
用户名和密码组合 MD5 加密
有个真实的业务场景,在测试某个业务系统的时候,它不是简单的密码 MD5 加密;
而是使用用户名和密码组合后,先转小写再 md5 加密;
这个需求的实现过程为:
输出为:
密码使用 MD5+盐加密
这个场景是先把密码设置盐;
然后将盐拼接在原密码之后;
实现过程为:
输出为:
MD5 加盐后将密码整体插入盐中
这个场景也挺常见的,就是先设置盐;
然后将原密码和盐使用 join 方式处理;
实现过程为:
输出为:
SHA1 加密
这个和 MD5 类似,不过它的结果是 160 位字节,一般为 40 位的十六进制字符串;
它也是在 hashlib 中;
用户名和密码拼接后使用 SHA1 加密,实现如下:
输出为:
SHA256 加密
SHA256 比 SHA1 更安全,但是效率慢,结果也会长一些;
用户名和密码拼接后使用 SHA256 加密,实现如下:
输出为:
当然还有 SHA512 这个就不说了,同理可证。
HMAC 加密
其实这个我自动化过程中用的不多,但是也是很常见的一个加密算法了;
HMAC 是一种基于加密 hash 函数和共享密钥的消息认证协议;
需要用到 hmac 库,目录在:
有三个参数,一个是密钥,一个是待加密的字符串,一个是 hash 函数,示例如下:
输出为:
其他的算法
当然后还有几个算法,这个不再赘述了,比如 DES、AES、RSA、ECC 等等
后续有空再补充吧。
本文源码
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/a5d45d81a97c50a411d783ec0】。文章转载请联系作者。
评论