python des解密_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ù)錯誤提示從源碼來分析:
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è)密鑰就可以了。
總結(jié)
以上是生活随笔為你收集整理的python des解密_DES-Python加解密案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新闻 华为 鸿蒙,华为鸿蒙系统或6月正式
- 下一篇: python语言月份缩写_[宜配屋]听图