今天接到一个对接第三方的需求,要解密对方接口返回的数据,加密方式使用的是DES加密
python DES加密分为两种,一种是DES;另外一种是DES3,也叫做TripleDES
下面分别做一下说明
第一种DES3,也就是TripleDES,直接撸代码
from Crypto.Cipher import DES3
KEY = 'welcome_to_china_weixina'
def encrypt_data(data):
pad = 8 - len(data) % 8
padStr = ""
for i in range(pad):
padStr = padStr + chr(pad)
data = data + padStr
des3 = DES3.new(KEY, DES3.MODE_ECB)
des3_data = des3.encrypt(data)
base64_des3_data = base64.standard_b64encode(des3_data)
return base64_des3_data
print encrypt_data("13333333333")
def decrypt_data(data):
pad = 8 - len(data) % 8
padStr = ""
for i in range(pad):
padStr = padStr + chr(pad)
data = data + padStr
base64_data = base64.standard_b64decode(data)
des = DES3.new(KEY, DES3.MODE_ECB)
decrypt_data = des.decrypt(base64_data)
return decrypt_data[0:ord(decrypt_data[len(decrypt_data)-1])*-1]
print decrypt_data("SRSTugMGkllhCfw47E1aWg==")
这种加密方式 KEY的值必须是16位或者24位,否则不支持
下面是加密解密后的结果

第二种 DES,代码可以延用上面这套加密解密方式
from Crypto.Cipher import DES
KEY = 'welcomet'
def encrypt_data(data):
pad = 8 - len(data) % 8
padStr = ""
for i in range(pad):
padStr = padStr + chr(pad)
data = data + padStr
des3 = DES.new(KEY, DES.MODE_ECB)
des3_data = des3.encrypt(data)
base64_des3_data = base64.standard_b64encode(des3_data)
return base64_des3_data
print encrypt_data("13333333333")
def decrypt_data(data):
pad = 8 - len(data) % 8
padStr = ""
for i in range(pad):
padStr = padStr + chr(pad)
data = data + padStr
base64_data = base64.standard_b64decode(data)
des = DES.new(KEY, DES.MODE_ECB)
decrypt_data = des.decrypt(base64_data)
return decrypt_data[0:ord(decrypt_data[len(decrypt_data)-1])*-1]
print decrypt_data("IL6rNiXEDgCfPzdg7KzuJg==")
这种加密方式 KEY的值必须是8位,否则不支持
下面是加密解密后的结果

本文详细介绍了在Python中使用DES和DES3(TripleDES)进行数据加密和解密的方法。通过实例代码展示了如何设置密钥,实现数据的加密与解密过程,并强调了密钥长度的要求。
1282





