AES 加解密

import requests
import time
import os
import json
import base64
import cv2
import numpy as np
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from concurrent.futures import ThreadPoolExecutor, waitsourceDataDir = 'C:\\Users\\yuyang2\\Pictures\\jyy'
sourceDataNameList = sorted([pic for pic in os.listdir(sourceDataDir) if pic.endswith('.jpg')])
picFirstName = sourceDataNameList[0]
dstDataDir = 'C:\\Users\\yuyang2\\Pictures\\jyy_dataDst'def cv2bytes(im):'''cv2转二进制图片:param im: cv2图像,numpy.ndarray:return: 二进制图片数据,bytes'''return np.array(cv2.imencode('.png', im)[1]).tobytes()def getImg_b(path):with open(path, "rb") as fb:  # 转为二进制格式img_b = fb.read()return img_bdef getStyle(input_list):effectIdDict = {}effectIdList = input_listfor effectInfo in effectIdList:effectIdDict[effectInfo['effectId']] = effectInfo['effectName']return effectIdDictdef checkDir(dir_path):if not os.path.exists(dir_path):os.makedirs(dstDataDir)class AESUtil:def __init__(self, key, iv):self.pad_length = AES.block_sizeself.key = keyself.iv = ivdef encryt(self, data):""":param data: 二进制图片数据:return: 经过aes加密和base64编码后的图像数据"""cipher = AES.new(self.key.encode('utf-8'), AES.MODE_CBC, self.iv.encode('utf-8'))data = pad(data, 16, style='pkcs7')# data = data.encode('utf-8')msg = cipher.encrypt(data)msg = base64.b64encode(msg)return msgdef decrypt(self, enStr):cipher = AES.new(self.key.encode('utf-8'), AES.MODE_CBC, self.iv.encode('utf-8'))decryptByts = base64.b64decode(enStr)msg = cipher.decrypt(decryptByts)msg = msg.strip(b'\x0f')return msg.decode('utf-8')class BLing:def __init__(self):self.FOR_BETA = Trueself.init_URL()self.GROUP_body = Noneself.MATERIAL_data = Noneself.GAN_data = Noneself.aes_key = "s***t@2021*"self.aes_iv = "s***t@2021*"self.headers = {'User-Agent': 'GAN/1.0.0 (com.sensemars.gan; build:1; iOS 14.7.1) Alamofire/5.4.4','Content-Type': 'application/json; charset=utf-8','Accept-Encoding': 'br;q=1.0, gzip;q=0.9, deflate;q=0.8'}self.session = requests.session()def init_URL(self):if self.FOR_BETA:self.GROUP_LIST_URL = "http://*/effect/manage/v1/api/getGroupList"self.MATERIAL_LIST_URL = "http://*/effect/manage/v1/api/getEffectList"self.GAN_URL = "http://*/algorithm/v1/sync/tasks"else:self.GROUP_LIST_URL = "https://api-bling.softsugar.com/effect/manage/v1/api/getGroupList"self.MATERIAL_LIST_URL = "https://api-bling.softsugar.com/effect/manage/v1/api/getEffectList"self.GAN_URL = "https://sf.softsugar.com:30380/algorithm/v1/sync/tasks"def get_ase_img(self, img_b):aes_base64 = AESUtil(key=self.aes_key, iv=self.aes_iv).encryt(img_b)return aes_base64def setGROUP_BodyData(self, page="", size=""):self.GROUP_body = json.dumps({"page": page, "size": size})def setMATERIA_BodyData(self, groupId="f939be78ccc04160a2a983c9f7506bb3", page="", size=""):self.MATERIAL_data = json.dumps({"groupId": groupId, "page": page, "size": size})def setGAN_BodyData(self, app_id, img_b):self.GAN_data = json.dumps({"app_id": app_id, "requests": [{"data": self.get_ase_img(img_b).decode()}]})def setUpBLingBodyData(self):self.setGROUP_BodyData()self.setMATERIA_BodyData()def get_GROUP_LIST_URL(self):response = self.session.post(self.GROUP_LIST_URL, headers=self.headers, data=self.GROUP_body)return response.content.decode()def get_MATERIAL_LIST_URL(self):response = self.session.post(self.MATERIAL_LIST_URL, headers=self.headers, data=self.MATERIAL_data)return response.json()def get_GAN_URL(self):response = self.session.post(self.GAN_URL, headers=self.headers, data=self.GAN_data)return response.json()# with open('data.json', 'r', encoding='utf-8') as f:
#     json_data = json.load(f)def get_BLing_data(pic_name):try:for effectId, style_name in effectIdDict.items():print("正在处理图片:%s, style: %s" % (pic_name, style_name))img_b = getImg_b(os.path.join(sourceDataDir, pic_name))bLing.setGAN_BodyData(int(effectId), img_b)response_GAN = bLing.get_GAN_URL()print(response_GAN["results"][0]["code"])img_data = response_GAN["results"][0]["data"]['image']img_data = base64.b64decode(img_data)save_name = os.path.join(dstDataDir, style_name + '_' + pic_name)with open(save_name, 'wb') as f:f.write(img_data)except Exception as e:print(e)returndef test_BLing_Single():# 开始访问算法接口,批量生成数据for effectId, style_name in effectIdDict.items():try:for pic_name in sourceDataNameList:print("正在处理图片:%s, style: %s" % (pic_name, style_name))img_b = getImg_b(os.path.join(sourceDataDir, pic_name))bLing.setGAN_BodyData(int(effectId), img_b)response_GAN = bLing.get_GAN_URL()print(response_GAN["results"][0]["code"])img_data = response_GAN["results"][0]["data"]['image']img_data = base64.b64decode(img_data)save_name = os.path.join(dstDataDir, style_name + '_' + pic_name)with open(save_name, 'wb') as f:f.write(img_data)except Exception as e:print(e)breakdef test_BLing_Multi():executor = ThreadPoolExecutor(4)# 开始访问算法接口,批量生成数据all_task = [executor.submit(get_BLing_data,  pic_name,) for pic_name in  sourceDataNameList]wait(all_task)# 参数times用来模拟网络请求的时间
def get_html(times):time.sleep(3)print("get page {}s finished".format(times))urls = range(10)  # 并不是真的urldef multiThreads():executor = ThreadPoolExecutor(4)all_task = [executor.submit(get_html, (url,)) for url in urls]wait(all_task)if __name__ == "__main__":image_b = getImg_b(os.path.join(sourceDataDir, picFirstName))  # 获取图片二进制数据checkDir(dstDataDir)                                           # 检查文件夹是否存在bLing = BLing()bLing.setUpBLingBodyData()                                     # 设置post data数据,初始化类# response_GROUP_LIST = bLing.get_GROUP_LIST_URL()# print(response_GROUP_LIST)response_MATERIAL_LIST = bLing.get_MATERIAL_LIST_URL()          # 通过相应数据,获取app_id 和 风格之间的映射关系# 获取风格effectIdDict = getStyle(response_MATERIAL_LIST['data']['records'])print(effectIdDict)# 单线程测试test_BLing_Single()# 多线程测试# test_BLing_Multi()

python post AES加密图片相关推荐

  1. 用python实现AES加密解密

    文章目录 背景 测试数据 代码 遗留问题 补充(2021.10.6) 背景 以蓝牙官方协议(V5.0)中的 sample data 为例子,看看怎么用 python 实现 AES 加密和解密. 测试数 ...

  2. Python实现AES加密进行PKCS5Padding的填充

    Python实现AES加密进行PKCS5Padding的填充 (1)Python 需要导入的模块 (2)AES加密代码 (3)AES解密代码 (4)测试代码 (5)测试结果

  3. python aes_python AES 加密

    pad: ZeroPadding mode: cbc #!/usr/bin/env python # -*- coding:utf-8 -*- # 这里使用pycrypto‎库 # 按照方法:easy ...

  4. Python 的AES加密与解密

    AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现. python 在 Windows下使用A ...

  5. PYTHON实现AES加密,中英文通用!!!

    一.前言 AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个.在日常的开发中,无论是实现前后端的接口数据加密,还是数据传输安全性,都使用了AES加密,本文章将从python的角度去实现A ...

  6. java aes 中文_从Java到Python的AES加密

    我试图对python和java中的一些字符串进行加密和解密,反之亦然,但是当我尝试用java加密和在python中使用相同的密钥解密时,我遇到了问题.在 这是我用来解密java输出的python算法f ...

  7. python凯撒加密图片

    欢迎加入我们卧虎藏龙的python讨论qq群:729683466 之前有朋友在群里问凯撒密码 询问如何用凯撒密码加密文件 几天,就用图片加密给大家演示一下 如何给图像进行加密 对图像的每个像素点进行数 ...

  8. windows中使用Python进行AES加密解密-文本文件加密工具

    之前的文章http://blog.csdn.net/u013578500/article/details/77905924 简单介绍了一下使用PyCrypto模块实现对字符串的加密解密,里面有提到我利 ...

  9. python 加密解密_python实现AES加密解密

    本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原 ...

最新文章

  1. 工具库 --- Validator (JS正则)
  2. Leangoo看板协作工具与Trello还真的不一样
  3. react项目中使用mocha结合chai断言库进行单元测试
  4. leetcode刷题总结(持续更新)
  5. docker一次构建,快速部署
  6. c# 两个list比较_C#刷遍Leetcode面试题系列连载(1) 入门与工具简介(VS Code amp; VS)...
  7. 99行不用指针 c语言贪食蛇,关于C语言指针的问题
  8. vijos p1433——火炬手之梦
  9. Serverless实战之路
  10. 是时候学习生成对抗网络了,李宏毅老师GAN视频教程下载
  11. java stringbuffer原理_深入理解String, StringBuffer, StringBuilder的区别(基于JDK1.8)
  12. Lync Server多SIP域环境和简单URL地址部署
  13. 1015. 德才论 (25)-PAT乙级真题
  14. 循环buffer的实现_Go语言源码阅读之bytes.Buffer
  15. 怎么看计算机版本号,如何查看电脑windows版本号(查看电脑版本信息的11种方法)...
  16. 大数据与人工智能系列文章
  17. Vue动态渲染echarts图表
  18. IMP-00058: IMP-00000: 未成功终止导入
  19. studio 3T连接不上mongoDB
  20. 竞赛服务器响应超时是否尝试重连,“吃鸡”坐在后座也能操控载具?几分钟后,我收到15字提醒...

热门文章

  1. 安卓PDF阅读器使用技巧Ⅱ:PDF文档添加批注、添加下划线及删除技巧
  2. 全国31省份双碳经济数据(2005-2020年)
  3. C#数据库sqlit,未能加载文件或程序集“System.Data.SQLite, Version=
  4. 深圳弘辽科技电商如何用互联网思维摆地摊
  5. PHP转shtml,phpcms教程之shtml的设置方法
  6. 被传销洗脑是一种怎样的体验
  7. 举例说明串池和堆中的字符串
  8. SM5401移动电源充放电管理芯片5V/0.8A充电宝芯片兼容HT4928替代TP4333
  9. 读书笔记《Outlier Analysis》 第二章 异常检测的概率和统计模型
  10. elasticsearch Analyzer