美文网首页
加密算法

加密算法

作者: 周周周__ | 来源:发表于2021-10-15 13:50 被阅读0次

    AES

    py版本 AES 128 CFB
    """
    pip install pycryptodome
    """
    from Crypto.Cipher import AES
    import base64
    
    def AES_128_CFB(String, key, iv):
        """
        加密
        :param String: 加密字符串
        :param key: 二进制
        :param iv: 二进制
        :return:
        """
        cryptor = AES.new(key=key, mode=AES.MODE_CFB, IV=iv, segment_size=128)
        ciphertext = cryptor.encrypt(String)
        return base64.b64encode(ciphertext)
    def AES_128_CFB_decode(String, key, iv):
        """
        加密
        :param String: 解密字符串
        :param key: 二进制
        :param iv: 二进制
        :return:
        """
        decode = base64.b64decode(String)
        cryptor = AES.new(key=key, mode=AES.MODE_CFB, IV=iv, segment_size=128)
        plain_text = cryptor.decrypt(decode)
        return plain_text
    key = b'anN2bXA2NjYsamlh'
    iv = b'amlheW91LHFpYW53'
    aa = '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'
    
    res = AES_128_CFB_decode(aa, key, iv)
    print(res.decode())
    
    py版本 AES CBC pksc7填充
    class Encrypt:
        def __init__(self, key, iv):
            self.key = key.encode('utf-8')
            self.iv = iv.encode('utf-8')
    
        def pkcs7padding(self, text):
            """明文使用PKCS7填充 """
            bs = 16
            length = len(text)
            bytes_length = len(text.encode('utf-8'))
            padding_size = length if (bytes_length == length) else bytes_length
            padding = bs - padding_size % bs
            padding_text = chr(padding) * padding
            self.coding = chr(padding)
            return text + padding_text
    
        def aes_encrypt(self, content):
            """ AES加密 """
            cipher = AES.new(self.key, AES.MODE_CBC, self.iv)
            # 处理明文
            content_padding = self.pkcs7padding(content)
            # 加密
            encrypt_bytes = cipher.encrypt(content_padding.encode('utf-8'))
            # 重新编码
            result = str(base64.b64encode(encrypt_bytes), encoding='utf-8')
            return result
    
        def aes_decrypt(self, content):
            """AES解密 """
            cipher = AES.new(self.key, AES.MODE_CBC, self.iv)
            content = base64.b64decode(content)
            text = cipher.decrypt(content).decode('utf-8')
            return text.rstrip(self.coding)
    
    if __name__ == '__main__':
        key = 'v4dj1g1lfekof8sz'
        iv = 'hs2s8eop6pn6cf89'
        a = Encrypt(key=key, iv=iv)
        d = a.aes_encrypt(data)
        print("解密:", d)
    
    

    相关文章

      网友评论

          本文标题:加密算法

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