软件测试 |接口加密
  p1prOQge3cDY 2023年11月02日 19 0

常用的加密算法有很多种,我所负责测试的接口平台项目主要使用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模块的使用。

Python 3.5.2(default,Nov 17 2016,17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help","copyright","credits" or "license" for more information.
>>> from Crypto.Hash import SHA256
>>> hash = SHA256.new()
>>> hash.update(b'message')

#使用digest()方法加密
>>> hash.digest()
b'\xabS\n\x13\xe4Y\x14\x98+y\xf9\xb7\xe3\xfb\xa9\x94\xcf\xd1\xf3\xf3"\xf7\x1c\xea\xla\xf0+F\x0cm\x1d'

#使用hexdigest()方法加密
>>> hash.hexdigest()
'ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cealafbf02b460cbdld'

通过digest()方法可以对字符串“message”进行加密。当然,通过hexdigest()方法也可以将其转换为16进制的加密字符串。

2.例二

AES是Advanced Encryption Standard的缩写,即高级加密标准,是目前非常流行的加密算法之一。

通过例子演示AES算法加密与解密。

>>> from Crypo.Cipher import AES

#加密
>>> obj = AES.new('This is a key123',AES.MODE_CEC,'This is an IV456')
>>> message = "The answer is no"
>>> ciphertext = obj.encrypt(message)
>>> ciphertext
b'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'

#解密
>>> obj2 = AES.new('This is a key123',AES.MODE_CBC,'This is an IV456')
>>> obj2.decrypt(ciphertext)
b'The answer is no'

加密

“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还提供一个强大的随机算法。

>>> from Crypto.Random import random
>>> random.choice(['dogs','cats','bears'])
'bears'
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
p1prOQge3cDY
最新推荐 更多