aes 128位加密/解密_aes-128需要的参数-程序员宅基地

技术标签: m3u8  

# -*- coding: utf-8 -*-
import sys
from Crypto.Cipher import AES
from Crypto import Random
from binascii import b2a_hex, a2b_hex


class prpcrypt():
    def __init__(self, key):
        self.key = key      # key是bytes类型的
        self.mode = AES.MODE_CBC
        self.iv = Random.new().read(AES.block_size)
        print(self.iv, '二进制形式')
        print(b2a_hex(self.iv), '二进制的十六进制assicc形式')

    # 加密函数,如果text不是16的倍数【加密文本text必须为16的倍数!】,那就补足为16的倍数
    def encrypt(self, text):    # text 参数是bytes类型 输出 也是bytes类型
        cryptor = AES.new(self.key, self.mode, self.iv)
        # 这里密钥key 长度必须为16(AES-128)、24(AES-192)、或32(AES-256)Bytes 长度.目前AES-128足够用
        length = 16
        count = len(text)


        if count % length != 0:
            add = length - (count % length)
        else:
            add = 0
        text = text + (b'\0' * add)

        self.ciphertext = cryptor.encrypt(text)
        # 因为AES加密时候得到的字符串不一定是ascii字符集的,输出到终端或者保存时候可能存在问题
        # 所以这里统一把加密后的字符串转化为16进制字符串
        result = b2a_hex(self.ciphertext)   # bytes to ascii 形式,hex形式

        return result

        # 解密后,去掉补足的空格用strip() 去掉

    def decrypt(self, text):

        cryptor = AES.new(self.key, self.mode, self.iv)

        plain_text = cryptor.decrypt(a2b_hex(text))
        return plain_text.rstrip(b'\0')


if __name__ == '__main__':
    # 结论 如何加密,如何解密
    mp4_path = r'C:\Users\wangcc\Desktop\ads_svp_video__0b6bt4aagaaas4amgwefrvpbvhyeaopqaa2a.f40.mp4'
    with open(mp4_path, 'rb') as f:
        buf = f.read()
    pc = prpcrypt(b'keyskeyskeyskeys')  # 初始化密钥
    # e = pc.encrypt(b"0123456789ABCDEF")
    # print(buf, 'buf')
    e = pc.encrypt(buf)
    with open('encrypt.mp4', 'wb') as enf:
        enf.write(e)
    print(type(e), 'e en')
    d = pc.decrypt(e)
    with open('decrypt.mp4', 'wb') as df:
        df.write(d)

key文件,16位

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wang880117/article/details/105759734

智能推荐

07. Redis 客户端访问_redis-cli 删可以 非交互式-程序员宅基地

文章浏览阅读1w次。Redis 提供了客户端访问工具redis-cli, 可以连接Redis服务器,执行Redis命令. redis-cli 有两种执行方式, 一种是交互式执行命令, 一种是非交互式执行.1. redis-cli 交互方式1.1 交互式交互式执行方式, 首先通过redis-cli 与redis服务器建立连接, 然后再执行redis相关命令, 与redis 进行交互$ redis-cli -h..._redis-cli 删可以 非交互式

APP软件开发、管理系统开发、网站建设、微信开发小程序分销商城等_v:wxlhlllhl-程序员宅基地

文章浏览阅读1.5k次。APP开发:安卓、苹果、h5微信纯开发、微商城搭建、办公系统、财务系统、报名系统、活动、抽奖、促销系统、奖金结算系统、直播系统、网站建设、商城、全返系统、公众号开发、网站开发、软件开发高端定制app开发,商城app开发,app定制开发,企业办公系统开发,CRM开发,OA开发,移动办公软件开发,各种软件定制开发开发端口:APP(安卓+iOS) 手机网页端(H5) 电脑网页端 (pc) PC+手机二合一官网网站 v:wxlhlllhl..._v:wxlhlllhl

Internal Error occurred. org.junit.platform.commons.JUnitException: TestEngine with ID ‘junit-jupite_junit internal error occurred-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏2次。莫名其妙的bugCaused by: org.junit.platform.commons.JUnitException: MethodSelector [className = 'com.wgg.MybatisPlusDemo02ApplicationTests', methodName = 'contextLoads', methodParameterTypes = ''] resolution failed at org.junit.platform.launcher.listeners.disc_junit internal error occurred

Python实战|车型识别小程序_python车型识别系统-程序员宅基地

文章浏览阅读3.5w次,点赞33次,收藏62次。基于Python制作一个车型识别小程序,可用于拍照识车,根据拍摄照片,快速识别图片中车辆的品牌型号。_python车型识别系统

Azkaban 的作业类型插件_azkaban user.to.proxy-程序员宅基地

文章浏览阅读1w次。首先说jobtype跟azkaban的webserver端无关,因为webserver节点只负责项目作业管理(上传和分发),并不关心你上传的是哪种类型的作业。负责具体执行的executor会解析job文件。还记得在配置.job作业文件的时候,使用type关键字指定作业类型吗?executor有一个作业类型管理器,在其构造方法中可以看到,既可以加载默认的作业类型,也能从插件中加载新的作业类型_azkaban user.to.proxy

华为switch上配置MSTP_华为swtms-程序员宅基地

文章浏览阅读4.8k次。拓扑:配置思路采用如下的思路配置MSTP的基本功能:将SwitchA和SwitchC配置到一个域内,域名为RG1,创建实例1。将SwitchB和SwitchD配置到另外一个域,域名为RG2,创建实例1。配置交换机SwitchA为CIST总根。在域RG1内,交换机SwitchA为CIST域根,SwitchA为实例1的域根_华为swtms

随便推点

安卓App创建一个新的页面_android开发 新建页面-程序员宅基地

文章浏览阅读2.3k次。1. 程序主入口2. 创建新的页面3. 使用新的页面打开刚创建的新页面OtherMainActivity.java修改代码,使在新的页面显示文本 “新的页面”打开页面管理文件AndroidManifest.xml,找到==<activity </ activity>== 标签,根据如下图在标签最后添加或删除以下代码,App启动就会自动加载此新的页面,<intent-filter> <action android:name="android_android开发 新建页面

21年大学统考计算机报名时间,2017年大学计算机基础试题题库及答案-程序员宅基地

文章浏览阅读526次。2017年大学计算机基础试题题库及答案一、单选题1、世界上首次提出存储程序计算机体系结构的是A 莫奇莱 B 艾仑·图灵 C 乔治·布尔 D 冯·诺依曼2、世界上第一台电子计算机诞生于A 1941年 B 1946年 C 1949年 D 1950年3、世界上第一台电子数字计算机采用的主要逻辑部件是A 电子管 B 晶体管 C 继电器 D 光电管4、下列叙述正确的是A 世界上第一台电子计算机ENIAC首次..._21年统考计算机题目

2018年腾讯校招产品群面体会_腾讯校园招聘群面真题-程序员宅基地

文章浏览阅读6.7k次。在腾讯的群面的过程中,时间有限且每组人数众多,每个人都比较难将自己对群面题目的完整思路展现出来,同时,还有考虑小组共同完成时的配合问题,核心思路是群面的重要内容,言简意赅的把群面题合作完成并完善具体,才能够在群面时游刃有余。 首先给大家分享一下我在腾讯的群面过程:一、面试准备 4.10 不知什么原因,还没有收到面试通知,内心很不安,尤其看到不少己经拿到面试通知在群里晒的同学。4.11快吃午饭时,手..._腾讯校园招聘群面真题

备案网站建设方案书模板_域名备案网站建设方案书模板-程序员宅基地

文章浏览阅读5.5k次,点赞3次,收藏14次。网站建设方案书一、网站内容简单概述+网站整体设计见下图(官网首页截图)。【官网首页截图】1、网站作用:记录自己日常生活,让别人了解我认识我2、网站规模:一般不超过二十个网页组成,所以规模不大3、网站目标客户:主要是自己,还有同学,朋友,和亲戚。4、网站特色:我的这类网站受众一般为青年人,所以在色彩上和设计风格上追求青年人的口味,画面绚烂,在内容上的特色表现为:(1)内容..._域名备案网站建设方案书模板

koa使用got 发起http请求_koa got-程序员宅基地

文章浏览阅读831次。刚了解这个,request年底就不再更新支持。一只想用axios替换,后来发现了got,就尝试使用一下。安装: npm install --save got使用: const got = require('got'); const { body } = await got.post('https://www.网址/orders', { json: { userId: "564456546ld5",_koa got

系统测试报告模板_系统功能测试报告-程序员宅基地

文章浏览阅读1.6k次。系统测试报告1.前言1.1概述说明这份验收测试报告的具体编写目的,指出预期的阅读范围。(1) 本报告按照项目的技术要求反映项目的验收测试结果(2) 阅读对象为项目组所有成员及其相关授权的人员项目背景说明:(1)被检验产品、产品构件名称;(2)该产品的任务提出者、开发者、用户及安装此产品的计算中心,指出测试环境与实际运行环境之间可能存在的差异以及这些差异对测试结果的影响。1.2术语与缩略语列出项目文档的专用术语和缩写词。以便阅读时,使读者明确,从而不产生歧义。该项根据实际情况可以删减。1_系统功能测试报告