最近手头一个项目使用了Des加解密(关于Des的科普移步至百度百科),其中密码使用了Des进行加密,同事之前写了个加解密的程序。问同事要了份程序,发来的exe在Mac下捉鸡了,又懒得开虚拟机,询问了下加解密的方式,想着闲来无事干脆写一个Python版的加解密程序好了。

人生苦短,快用Python。

这个项目中Des自定义密钥是用户Uid用0补足8位。

记录一下,备忘。

1. 安装pyDes库

pip install pyDes

2. Coding

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

from pyDes import *
import base64

# Des CBC
# 自定IV向量
Des_IV = b"\xef\xab\x56\x78\x90\x34\xcd\x12"

def DesEncrypt(str,key):
    # str 明文password
    # key uid
    Des_Key = (key+"0000")[0:8]
    k = des(Des_Key, CBC, Des_IV, pad=None, padmode=PAD_PKCS5)
    EncryptStr = k.encrypt(str)
    return base64.b64encode(EncryptStr) #转base64编码返回

def DesDecrypt(str,key):
    # str 密文password
    # key uid
    Des_Key = (key+"0000")[0:8]
    EncryptStr = base64.b64decode(str)
    print(EncryptStr)
    k = des(Des_Key, CBC, Des_IV, pad=None, padmode=PAD_PKCS5)
    DecryptStr = k.decrypt(EncryptStr)
    return DecryptStr 

3. 写在最后

感谢微信群里大佬的指点!

参考:
http://www.mamicode.com/info-detail-508384.html
http://www.cnblogs.com/SunboyL/p/pyDes.html

标签:python, des, pydes, 加密, 解密

已有 2 条评论

  1. 张建平 张建平

    你好,我按照这个写了,但是一直报错,我用py2和py3都试过,希望可以解答,谢谢
    ValueError: pyDes can only work with encoded strings, not Unicode.

    1. 根据字面意思应该是传入的密文格式不符合,请检查一下密文是否为Des加密。

添加新评论