【python】crypto pkcs7加解密使用

一、场景

    由于爬取某网站视频,遇到加密信息,需要使用脚本模拟实现信息自动转换,实现自动下载

 

二、以pkcs7为例

复制代码
import base64

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

Url = 'https://www.iqiyi.com/v_2bytpz1q198.html'
#===============================================================================================================
# pkc7补码方式(ECB加密)
#===============================================================================================================
class PrpCrypt(object):

    def __init__(self):
        self.unpad = lambda date: date[0:-ord(date[-1])]

    def aes_cipher(self, key, aes_str):
        # 使用key,选择加密方式
        aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)
        pad_pkcs7 = pad(aes_str.encode('utf-8'), AES.block_size, style='pkcs7')  # 选择pkcs7补全
        encrypt_aes = aes.encrypt(pad_pkcs7)
        # 加密结果
        encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')  # 解码
        encrypted_text_str = encrypted_text.replace("\n", "")
        # 此处我的输出结果老有换行符,所以用了临时方法将它剔除

        return encrypted_text_str

    # 解密后,去掉补足的空格用strip() 去掉
    def decrypt(self, key, decrData):  # 解密函数
        res = base64.decodebytes(decrData.encode("utf8"))
        aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)
        msg = aes.decrypt(res).decode("utf8")
        return self.unpad(msg)


if __name__ == '__main__':
    # key的长度需要补长(16倍数),补全方式根据情况而定,此处我就手动以‘0’的方式补全的32位key
    # key字符长度决定加密结果,长度16:加密结果AES(128),长度32:结果就是AES(256)
    key = "yourme@nxflv@com"
    # # 加密字符串长同样需要16倍数:需注意,不过代码中pad()方法里,帮助实现了补全(补全方式就是pkcs7)
    aes_str =Url
    encryption_result = PrpCrypt().aes_cipher(key, aes_str)
    print('加密', encryption_result)
    c = PrpCrypt().decrypt(key, encryption_result)
    print('解密', c)
复制代码

主要是对视频网址的加密和解密,有什么用,你懂的。

 

 

参考链接:

【Python】Crypto模块 _ RSA加解密、加签验签 - Phoenixy - 博客园

(73条消息) python3 执行AES加密及解密方法_python3使用aes_没有竹蜻蜓的小叮当的博客-CSDN博客

(73条消息) AES实践 pycryptodome 实现(ECB模式)对称加密 – AES(256)加密,pkcs7补全方式_范之度的博客-CSDN博客

(73条消息) Python3中加密与解密详解_cipher.encrypt_0914_h的博客-CSDN博客

python实现AES加密、解密 - 傻白甜++ - 博客园

python的AES-CBC加密 - 知乎

(73条消息) 利用crypto-js、python实现AES 、DES前后端的加解密_cryptojs python_我是个假程序员的博客-CSDN博客

posted @   代码诠释的世界  阅读(994)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示