软件测试 | 接口测试
常用的加密算法有很多种,我所负责测试的接口平台项目主要使用 AES 加密算法,所以对该算法有所了解。
PyCrypto 库
PyCrypto 是一个免费的加密算法库,支持常见的 DES、AES 加密,以及 MD5、SHA 等各种 HASH 运算。
PyPI 仓库地址:https://pypi.python.org/pypi/pycrypto
PyCrypto 在 Windows 系统中安装需要依赖于“vcvarsall.bat”文件,解决办法是安装庞大的 Visual Stuio,或者其他通过繁琐的过程才能安装成功。
PyCrypto 可以做什么?在 PyPI 的下载页面给出了几个简单例子。
1.例一
SHA-256 算法属于密码 SHA-2 系列哈希。它产生了一个消息的 256 位摘要。哈希值用作表示大量数据的固定大小的唯一值。数据的少量更改会在哈希值中产生不可预知的大量更改。
下面通过例子演示 SHA256 模块的使用。
通过 digest()方法可以对字符串“message”进行加密。当然,通过 hexdigest()方法也可以将其转换为 16 进制的加密字符串。
2.例二
AES 是 Advanced Encryption Standard 的缩写,即高级加密标准,是目前非常流行的加密算法之一。
通过例子演示 AES 算法加密与解密。
加密
“This is a key 123”为 key,长度有着严格的要求,必须为 16、24 或 32 位,否则将抛出错误:“ValueError:AES key must be eithre 16,24,or 32bytes long”。
“This is an IV456”为 VI,长度要求更加严格,只能为 16 位。否则将抛出错误:“ValueError: IV must be 16 bytes long”.
通过 encrypt()方法对“message”字符串进行加密得到:b'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'。
解密
想要对加密字符串进行解密,则必须知道加密时所使用的 key 和 VI。通过 decrypt()方法对加密字符串进行解密得到:b'The answer is no'。
如果 key 和 VI 错误,则将会无法得到正确的解密字符串。例如,把 key 修改为:‘This is a key888’,则加密失败将会得到另一个新的加密字符串:b'xb1\xf7\xc2\x9d\xf7\&\x05\x89\\\xa7\x17\x16\x06\x9b\xf4。
例三
除此之外,PyCryPto 还提供一个强大的随机算法。
搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核
评论