美文网首页
DES-Python加解密案例

DES-Python加解密案例

作者: mango115 | 来源:发表于2020-05-25 21:13 被阅读0次

    在python中处理des加解密,常用的库是pyDes这个库,现在以具体例子来讲解加解密算法
    1、需求:对一段数字或者字符或者其他格式文本进行加密,本次使用des里面的ECB模式
    快捷工具链接:http://tool.chacuo.net/cryptdes

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

    执行测试下结果为:

    image.png
    结果与快捷工具网站上是一致的。
    2、加解密过程中问题汇总
    ①ValueError: Invalid DES key size. Key must be exactly 8 bytes long.
    翻译:DES密钥大小无效。密钥长度必须正好为8个字节
    根据错误提示从源码来分析:
    image.png
    问题主要出现在密码(key)的长度上(本代码中的Des_Key )比如是控制在8个以内。但是在快捷工具网站上http://tool.chacuo.net/cryptdes 输入超过8个字符串是可以正常加解密的。
    通过分析比较后,发现其实加密钥不算输入多长,实际只取前8位字符,所以你会看到8个加密钥及8个以上加密钥的加解密结果一致,如图:
    image.png
    所以后续可以自己碰到是des加密钥超过8个字符时,可以处理下只取前8个密钥就可以了。

    相关文章

      网友评论

          本文标题:DES-Python加解密案例

          本文链接:https://www.haomeiwen.com/subject/cdmuahtx.html