千家信息网

Python用AES&SHA1PRNG算法进行加密与解密

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇内容介绍了"Python用AES&SHA1PRNG算法进行加密与解密"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2025年01月23日Python用AES&SHA1PRNG算法进行加密与解密

本篇内容介绍了"Python用AES&SHA1PRNG算法进行加密与解密"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

python3 - AES SHA1PRNG 算法 加密 解密

因工作需要,需要对aes进行加解密,收集资料时从网上找到了核心写法代码,经小量修改满足了需求。

核心加、解密代码来自原文: https://blog.csdn.net/max229max/article/details/87639613

#!/usr/bin/python# -*- coding: UTF-8 -*-'''python3 - AES SHA1PRNG 算法 加密 解密注,需安装以下依赖库:pip3 install pycryptodomepip3 install Crypto'''from Crypto.Cipher import AESimport hashlibBS = AES.block_sizedef padding_pkcs5(value):    return str.encode(value + (BS - len(value) % BS) * chr(BS - len(value) % BS))# 将十进制转换为十六进制def get_sha1prng_key(key):    signature = hashlib.sha1(key.encode()).digest()    signature = hashlib.sha1(signature).digest()    return ''.join(['x' % i for i in signature]).upper()[:32]# 加密def encrypt(key:str,value:str) -> str:    cryptor = AES.new(bytes.fromhex(key), AES.MODE_ECB)    padding_value = padding_pkcs5(value)  # padding content with pkcs5    ciphertext = cryptor.encrypt(padding_value)    return ''.join(['x' % i for i in ciphertext]).upper()# 解密def decrypt(key:str, value:str) -> str:    ''' AES/ECB/NoPadding decrypt '''    key = bytes.fromhex(key)    cryptor = AES.new(key, AES.MODE_ECB)    ciphertext = cryptor.decrypt(bytes.fromhex(value))    return padding_zero(str(ciphertext, "utf-8"))# 字符串处理,过滤特殊字符def padding_zero(value):    list = []    for c in value:        # ascii码范围获取        if ord(c) > 31 & ord(c) < 127:            list.append(c)    return ''.join(list)if __name__ == '__main__':    key = 'cce33fa1-9496-4796-8a32-f84e65dcb056'    content = 'test_data_10086'    edb = encrypt(get_sha1prng_key(key),content)    print(content +'='+ edb)    ddb = decrypt(get_sha1prng_key(key),edb)    print(edb +'='+ ddb)

"Python用AES&SHA1PRNG算法进行加密与解密"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0