軟件測(cè)試 | 接口加密
常用的加密算法有很多種,我所負(fù)責(zé)測(cè)試的接口平臺(tái)項(xiàng)目主要使用AES加密算法,所以對(duì)該算法有所了解。
PyCrypto庫(kù)
PyCrypto是一個(gè)免費(fèi)的加密算法庫(kù),支持常見(jiàn)的DES、AES加密,以及MD5、SHA等各種HASH運(yùn)算。
PyPI倉(cāng)庫(kù)地址:https://pypi.python.org/pypi/pycrypto
PyCrypto在Windows系統(tǒng)中安裝需要依賴(lài)于“vcvarsall.bat”文件,解決辦法是安裝龐大的Visual Stuio,或者其他通過(guò)繁瑣的過(guò)程才能安裝成功。
PyCrypto可以做什么?在PyPI的下載頁(yè)面給出了幾個(gè)簡(jiǎn)單例子。
1.例一
SHA-256算法屬于密碼SHA-2系列哈希。它產(chǎn)生了一個(gè)消息的256位摘要。哈希值用作表示大量數(shù)據(jù)的固定大小的唯一值。數(shù)據(jù)的少量更改會(huì)在哈希值中產(chǎn)生不可預(yù)知的大量更改。
下面通過(guò)例子演示SHA256模塊的使用。
通過(guò)digest()方法可以對(duì)字符串“message”進(jìn)行加密。當(dāng)然,通過(guò)hexdigest()方法也可以將其轉(zhuǎn)換為16進(jìn)制的加密字符串。
2.例二
AES是Advanced Encryption Standard的縮寫(xiě),即高級(jí)加密標(biāo)準(zhǔn),是目前非常流行的加密算法之一。
通過(guò)例子演示AES算法加密與解密。
加密
“This is a key 123”為key,長(zhǎng)度有著嚴(yán)格的要求,必須為16、24或32位,否則將拋出錯(cuò)誤:“ValueError:AES key must be eithre 16,24,or 32bytes long”。
“This is an IV456”為VI,長(zhǎng)度要求更加嚴(yán)格,只能為16位。否則將拋出錯(cuò)誤:“ValueError: IV must be 16 bytes long”.
通過(guò)encrypt()方法對(duì)“message”字符串進(jìn)行加密得到:b'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'。
解密
想要對(duì)加密字符串進(jìn)行解密,則必須知道加密時(shí)所使用的key和VI。通過(guò)decrypt()方法對(duì)加密字符串進(jìn)行解密得到:b'The answer is no'。
如果key和VI錯(cuò)誤,則將會(huì)無(wú)法得到正確的解密字符串。例如,把key修改為:‘This is a key888’,則加密失敗將會(huì)得到另一個(gè)新的加密字符串:b'xb1\xf7\xc2\x9d\xf7\&\x05\x89\\\xa7\x17\x16\x06\x9b\xf4。
例三
除此之外,PyCryPto還提供一個(gè)強(qiáng)大的隨機(jī)算法。
搜索微信公眾號(hào):TestingStudio霍格沃茲的干貨都很硬核