美文网首页百人计划
Python3常用加密方法使用总结

Python3常用加密方法使用总结

作者: 葛木瓜 | 来源:发表于2018-08-02 23:55 被阅读2次

    一、缘 起

    今日做接口测试,用Python实现接口签名认证的过程中用到了一些常用算法,在此做以总结,以便往后回顾

    二、说 明

    • 环境:Win 7 + Python 3.6
    • 内容:
      1. Python 3MD5加密的常用方法
      2. Python 3AES加密的常用方法
      3. Python 3下匿名函数lamda的简单使用

    三、实 例

    • Python 3下MD5加密的常用方法
    # 由于MD5模块在python3中被移除,使用hashlib模块进行md5操作
    import hashlib
    
    # md5加密实现
    def md5(string):
        m = hashlib.md5()
        # 注意update()输入应为bytes类型,需用.encode('utf-8')将str转为bytes型
        m.update(string.encode('utf-8')) 
        return m.hexdigest()
    
    print(md5('ssfan'))
    
    >> ac9a056a8e0954fcbf0370f2ca883b53
    
    • Python 3下AES加密的常用方法
    1. Python 3 下安装AES
    # 第一步,安装crypto
    pip install crypto
    # 第二步,安装pycryptodome
    pip show pycryptodome
    # 第三步,改文件夹名称
    进入Python3的目录下的\lib\site-packages,将crypto文件夹更名为Crypto(注意是大写的C,否则导入模块失败)
    
    1. Python 3AES加密的常用方法
    import base64
    from Crypto.Cipher import AES
    
    # AES加密
    def aes_crypt(key, iv, passwd):
        """
        AES加密算法(key,iv,passwd输入均应为bytes类型,选择MODE_CBC类型加密)
        :param key: 秘钥(定值,16位长度)
        :param iv: 偏移(定值,位长度)
        :param passwd: 密码
        :return: 返回值再经过base64加密后
        """
        BS = AES.block_size  # 获取AES数据位数(16位)
        # 补位,补够16位
        pad = (lambda s: s + (BS - len(s) % BS) * '#')
        print(pad(passwd))
        aes = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))
        return base64.b64encode(aes.encrypt(pad(passwd).encode('utf-8')))
    
    aes_key = 'QWHeJfoWQgaYasdf'
    aes_iv = '1111111111222345'
    password = '123456'
    # 注意,经过aes_crypt加密的密文是bytes类型
    password = aes_crypt(aes_key, aes_iv, password).decode('utf-8')
    print(password)
    
    
    >> 123456##########
    >> p8Vsc9TZDlFRoQctgiWJOA==
    
    • Python 3下匿名函数lamda的简单使用
    # 匿名函数
    pad = (lambda s: s + (16 - len(s) % 16) * '#')
    
    # 正常函数
    def pad_nomal(s):
        return s + (16 - len(s) % 16) * '#'
    print(pad('ssfan'), pad_nomal('ssfan'))
    
    >> ssfan########### ssfan###########
    

    ~
    ~
    ~


    不积跬步,无以至千里

    相关文章

      网友评论

        本文标题:Python3常用加密方法使用总结

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