注意点
一、秘钥必须是8位
二、待加密的明文长度必须是8的倍数,不足则补空字符
第三方库
from Crypto.Cipher import DES
import base64
加密函数
def encrypt_des(cipher):
if cipher is None:
return ""
try:
key = '1234A#CD'
# ECB方式
generator = DES.new(key, DES.MODE_ECB)
# 非8整数倍明文补位
pad = 8 - len(cipher) % 8
pad_str = ""
for i in range(pad):
pad_str = pad_str + chr(pad)
# 加密
encrypted = generator.encrypt(cipher + pad_str)
# 编码得密文
result = base64.b64encode(encrypted)
print "cipher : "+str(cipher)+" encrypted : "+result
return result
except Exception, e:
print Exception, ":", e
return ""
测试
print encrypt_des("1234567890")
输出
cipher : 1234567890 encrypted : jHgeV9zr6EVnSM7n7LG63g==
解密函数
def decrypt_des(encrypted):
if encrypted is None:
return ""
try:
key = '1234A#CD'
# ECB方式
generator = DES.new(key, DES.MODE_ECB)
# 解码
crypted_str = base64.b64decode(encrypted)
# 解密
result = generator.decrypt(crypted_str)
# 替换非空格字符(诡异的串)
result = result.strip("�����")
result = result.strip("������")
print "encrypted : "+str(encrypted)+" cipher :"+result
return result
except Exception, e:
print Exception, ":", e
return ""
测试
print decrypt_des("jHgeV9zr6EVnSM7n7LG63g==")
输出
encrypted : jHgeV9zr6EVnSM7n7LG63g== cipher :1234567890
网友评论