DES-Python加解密案例

在python中處理des加解密,常用的庫是pyDes這個(gè)庫,現(xiàn)在以具體例子來講解加解密算法
1、需求:對一段數(shù)字或者字符或者其他格式文本進(jìn)行加密,本次使用des里面的ECB模式
快捷工具鏈接:http://tool.chacuo.net/cryptdes

image.png

比如:想要實(shí)現(xiàn)以上的加密方式,代碼實(shí)現(xiàn)為:

from pyDes import *
import base64

Des_Key = b"abcdefgh" # 相當(dāng)于加密鑰
Des_IV = b"\x22\x33\x35\x81\xBC\x38\x5A\xE7" # 自定IV向量(官網(wǎng)例子就是這么寫的)

#加密id算法
def encrypt_str(s):
 k = des(Des_Key, ECB, Des_IV, pad=None, padmode=PAD_PKCS5)
 encrystr = k.encrypt(s)
 print(base64.b64encode(encrystr))
 return base64.b64encode(encrystr)

#解密id算法
def decrypt_str(s):
 k = des(Des_Key, ECB, Des_IV, pad=None, padmode=PAD_PKCS5)
 decrystr = k.decrypt(base64.b64decode(s))
 print(decrystr)
 return decrypt_str

if __name__ == "__main__":
 encrypt_str('1234567')
 decrypt_str('En6l+EwvM48=')

執(zhí)行測試下結(jié)果為:

image.png

結(jié)果與快捷工具網(wǎng)站上是一致的。
2、加解密過程中問題匯總
①ValueError: Invalid DES key size. Key must be exactly 8 bytes long.
翻譯:DES密鑰大小無效。密鑰長度必須正好為8個(gè)字節(jié)
根據(jù)錯(cuò)誤提示從源碼來分析:
image.png

問題主要出現(xiàn)在密碼(key)的長度上(本代碼中的Des_Key )比如是控制在8個(gè)以內(nèi)。但是在快捷工具網(wǎng)站上http://tool.chacuo.net/cryptdes 輸入超過8個(gè)字符串是可以正常加解密的。
通過分析比較后,發(fā)現(xiàn)其實(shí)加密鑰不算輸入多長,實(shí)際只取前8位字符,所以你會看到8個(gè)加密鑰及8個(gè)以上加密鑰的加解密結(jié)果一致,如圖:
image.png

所以后續(xù)可以自己碰到是des加密鑰超過8個(gè)字符時(shí),可以處理下只取前8個(gè)密鑰就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容