python des解密_DES-Python加解密案例

本文介绍了使用Python的pyDes库进行DES加密和解密的步骤,包括设置加密钥和初始化向量,展示了如何实现ECB模式的加解密操作,并针对加解密过程中可能出现的`ValueError: Invalid DES key size.`问题进行了分析,指出实际加密仅取前8个字节的密钥,从而解决密钥长度问题。
摘要由CSDN通过智能技术生成

在python中处理des加解密,常用的库是pyDes这个库,现在以具体例子来讲解加解密算法

1、需求:对一段数字或者字符或者其他格式文本进行加密,本次使用des里面的ECB模式

快捷工具链接:http://tool.chacuo.net/cryptdes

8ef1d90ddf54

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=')

执行测试下结果为:

8ef1d90ddf54

image.png

结果与快捷工具网站上是一致的。

2、加解密过程中问题汇总

①ValueError: Invalid DES key size. Key must be exactly 8 bytes long.

翻译:DES密钥大小无效。密钥长度必须正好为8个字节

根据错误提示从源码来分析:

8ef1d90ddf54

image.png

问题主要出现在密码(key)的长度上(本代码中的Des_Key )比如是控制在8个以内。但是在快捷工具网站上http://tool.chacuo.net/cryptdes 输入超过8个字符串是可以正常加解密的。

通过分析比较后,发现其实加密钥不算输入多长,实际只取前8位字符,所以你会看到8个加密钥及8个以上加密钥的加解密结果一致,如图:

8ef1d90ddf54

image.png

所以后续可以自己碰到是des加密钥超过8个字符时,可以处理下只取前8个密钥就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值