python DES加密总结

今天接到一个对接第三方的需求,要解密对方接口返回的数据,加密方式使用的是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位,否则不支持

下面是加密解密后的结果

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值