python des解密_DES-Python加解密案例
在python中處理des加解密,常用的庫是pyDes這個庫,現在以具體例子來講解加解密算法
1、需求:對一段數字或者字符或者其他格式文本進行加密,本次使用des里面的ECB模式
快捷工具鏈接:http://tool.chacuo.net/cryptdes
image.png
比如:想要實現以上的加密方式,代碼實現為:
from pyDes import *
import base64
Des_Key = b"abcdefgh" # 相當于加密鑰
Des_IV = b"\x22\x33\x35\x81\xBC\x38\x5A\xE7" # 自定IV向量(官網例子就是這么寫的)
#加密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=')
執行測試下結果為:
image.png
結果與快捷工具網站上是一致的。
2、加解密過程中問題匯總
①ValueError: Invalid DES key size. Key must be exactly 8 bytes long.
翻譯:DES密鑰大小無效。密鑰長度必須正好為8個字節
根據錯誤提示從源碼來分析:
image.png
問題主要出現在密碼(key)的長度上(本代碼中的Des_Key )比如是控制在8個以內。但是在快捷工具網站上http://tool.chacuo.net/cryptdes 輸入超過8個字符串是可以正常加解密的。
通過分析比較后,發現其實加密鑰不算輸入多長,實際只取前8位字符,所以你會看到8個加密鑰及8個以上加密鑰的加解密結果一致,如圖:
image.png
所以后續可以自己碰到是des加密鑰超過8個字符時,可以處理下只取前8個密鑰就可以了。
總結
以上是生活随笔為你收集整理的python des解密_DES-Python加解密案例的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 新闻 华为 鸿蒙,华为鸿蒙系统或6月正式
 - 下一篇: JS学习笔记5