API接口加密,解决自动化中登录问题

news2024/10/6 8:32:13

一、加密方式

  • AES:对称加密,快
  • RAS:非对称加密,慢
  • AES+RAS:安全+高效

加密过程:字符串=====》字节流====》加密的字节流(算法),解密有可能出现乱码,所以不能直接转成字符串,一般采用base64,base64的结果一定是ASCII范围内的字节,所以一定可以转成字符串

字符串转成字节流:encode

字节流转成字符串:decode

二、接口加密

请求:加密,响应:解密

  1. 加密API请求错误
  • 格式不正确
  • 加密格式不正确
  • 请求参数值不正确

三、第三方库实现加密

  1. 安装pycryptodome:pip3 install pycryptodome

四、加密方式

以下加密信息,测试端和接口端必须一致

  • 加密算法
  • 密钥
  • 加密模式
  • IV变量

五、加密代码

加密算法

import base64
import json
from Crypto.Cipher import AES
import base64

#AEX加密
key = b"sanmu's aes_key!"   #16位字节作为密钥
mode=AES.MODE_EAX   #EAX加密模式
IV=b"0"*16

class Encoder:
    @staticmethod
    def encrypt(data:dict)->str:
        """
        AES加密
        1.接收字典
        2.字典转字符串
        3.字符串转字节
        4.字节进行加密
        5.对加密结果进行bas64
        6.编码结果转字符串
        :param data:
        :return:
        """
        encoder = AES.new(key, AES.MODE_EAX,nonce=IV)
        content_str=json.dumps(data)
        content_byte=content_str.encode('utf-8')
        content_en = encoder.encrypt_and_digest(content_byte)
        return base64.b64encode(content_en).decode("utf-8")


    @staticmethod
    def decrypt(data:str)->dict:
        """
        AES解密
        1.接收字符串
        2.字符串转字节
        3.base64解码
        4.AES解密
        5.解密结果转字符串
        6.字符串转字典
        :param data:
        :return:
       """
        encoder = AES.new(key, AES.MODE_EAX,nonce=IV)
        content_byte=base64.b64decode(data)
        content_de=encoder.decrypt(content_byte)
        content_str=content_de.decode("utf-8")
        content=json.loads(content_str)
        return content

test_api.py
import requests
from libs import  Encoder

login_info={
    'username':'sanmu',
    'password':'123456'
}

data={
    "content":Encoder.encrypt(login_info),  #内容是AES加密的,是字符串
    "cipher":"AES"
}

print(data)
'''
url='https://api.tttt.one/rest-v1/encrypt/with_json'
resp=requests.post(url,json=data)
print(resp.json())

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1168137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+selenium自动化测试--鼠标悬停浮窗定位

页面上有些元素会隐藏起来,要鼠标放到某个位置才会显示出来,例如百度首页https://www.baidu.com/设置下面的隐藏按钮,如下图所示 定位鼠标悬停才显示的元素,要引入新模块,如下所示 from selenium.webdriver.common.ac…

12.JavaScript(WebAPI) - JS api文献精解

文章目录 1.WebAPI 背景知识1.1什么是 WebAPI1.2什么是 API1.3API 参考文档 2.DOM 基本概念2.1什么是 DOM2.2DOM 树 3.获取元素3.1querySelector3.2querySelectorAll 4.事件初识4.1基本概念4.2事件三要素4.3简单示例 5.操作元素5.1获取/修改元素内容5.1.1innerText5.1.2innerHT…

AD9371 官方例程裸机SW 和 HDL配置概述(二)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…

javafaker测试数据生成实战

javafaker测试数据生成实战 1.背景2.介绍2.1 特点 3. 使用3.1 基础使用3.1.1 maven依赖3.1.1 使用示例 3.2 进阶使用3.1 生成中文信息3.2 根据姓名生成账号3.2.1 maven依赖3.2.2 中文转拼音工具类 3.3 高级使用3.3.1 中文性名重复处理方案1: 偷懒方式方案2: 较真模式 1.背景 最…

ChatGPT 被爆重大隐私泄露!在回答时突然蹦出陌生男子自拍照,你的数据都将被偷走训练模型!

ChatGPT 被爆重大隐私泄露 ! 一位用户在向 ChatGPT 询问 Python 中的代码格式化包 black 的用法时,没有一点点防备,ChatGPT 在回答中插入了一个陌生男子的自拍照(手动捂脸.jpg) 可以看到刚开始 ChatGPT 还相当正常&am…

智慧灯杆网关智能化选择(网关助力城市完整项目方案)

在当代城市发展中,智慧照明作为一项重要的技术创新,正逐渐改变着我们的城市生活。作为城市智慧照明的核心设备,智慧灯杆网关SG600凭借出色的性能和创新的解决方案,成为了引领城市智慧照明的完美选择。本文将详细介绍SG600的特点和…

linux centos7安装colmap

centos安装colmap 一、安装依赖 sudo yum install \gflags-devel \glog-devel \glew-devel \atlas \atlas-devel \lapack-devel \blas-devel \flann-devel \lz4-devel \sqlite-devel \metis-devel \qt5-qtbase-devel二、编译安装colmap git clone https://github.com/colmap/…

剑指JUC原理-10.并发编程大师的原子累加器底层优化原理(与人类的优秀灵魂对话)

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

服装手机壳抱枕diy来图定制小程序开发

服装手机壳抱枕diy来图定制小程序开发 一、我们的定位与特色 首先,我们是一个多元化商品定制商城。与其他商城不同的是,我们致力于提供全方位的定制服务,包括手机壳、抱枕、服装、水杯贴图等各类商品。 此外,我们还提供冲洗照片…

C语言中什么时候用“->”

使用说明 "->"是C语言中的一个运算符&#xff0c;它用于访问结构体或者联合体中的成员&#xff0c;其左边是一个指向结构体或者联合体的指针&#xff0c;右边是需要访问的成员名。 举例说明 定义结构体 # include <stdio.h> # include <stdlib.h>…

【算法练习Day37】零钱兑换 II组合总和 Ⅳ

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 零钱兑换 II组合总和 Ⅳ总结…

Redis入门04-消息通知

目录 Redis中的消息通知 命令行操作 Redis中的管道 Redis中的消息通知 Redis可以用作消息队列的中间件&#xff0c;它提供了一种轻量级、高性能的消息传递机制&#xff0c;适用于实时通信、任务队列、事件处理等各种应用。以下是有关如何使用Redis作为消息队列的一些重要信…

中国人民大学与加拿大女王大学金融硕士——人生是旷野,不是一条轨道

在这个瞬息万变的时代&#xff0c;我们每个人都像是一颗流星&#xff0c;在宇宙中独自燃烧。我们每个人都有自己的梦想&#xff0c;自己的追求&#xff0c;自己的道路。然而&#xff0c;很多时候&#xff0c;我们却发现自己被现实的轨道所束缚&#xff0c;无法自由地追求自己的…

记一次并发问题 Synchronized 失效

记一次并发问题 Synchronized 失效 场景&#xff1a;为避免信息提交重复&#xff0c;给事务方法增加了synchronized修饰符&#xff0c;实际场景中仍然无法完全避免重复&#xff0c;原因是因为在第一个线程执行完synchronized代码段后&#xff0c;此时spring还未完成事务提交&a…

macOS 安装brew

参考链接&#xff1a; https://mirrors4.tuna.tsinghua.edu.cn/help/homebrew/ https://www.yii666.com/blog/429332.html 安装中科大源的&#xff1a; https://zhuanlan.zhihu.com/p/470873649

Langchain-Chatchat项目:4.2-P-Tuning v2使用的数据集

本文主要介绍P-tuning-v2论文中的5种任务&#xff0c;分别为Glue任务、NER任务、QA任务、SRL任务、SuperGlue任务&#xff0c;重点介绍了下每种任务使用的数据集。 一.Glue任务   GLUE&#xff08;General Language Understanding Evaluation&#xff09;是纽约大学、华盛顿…

直播界很火的无线领夹麦克风快充方案 Type-C接口 PD快充+无线麦克风可同时进行

当前市场上流行一款很火的直播神器&#xff0c;无线领夹麦克风&#xff08;MIC&#xff09;&#xff0c;应用于网红直播&#xff0c;网课教学&#xff0c;采访录音&#xff0c;视频录制&#xff0c;视频会议等等场景。 麦克风对我们来说并不陌生&#xff0c;而且品类有很多。随…

app逆向入门之车智赢

声明&#xff1a;本文仅限学习交流使用&#xff0c;禁止用于非法用途、商业活动等。否则后果自负。如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01;本教程也没有专门针对某个网站而编写&#xff0c;单纯的技术研究 目录 案例分析技术依赖参数分析效果展示代码分享…

LabVIEW开发自动批次称重和卸料系统

LabVIEW开发自动批次称重和卸料系统 对自动批次称重系统具明显的优势&#xff0c;例如确保批次完整性&#xff0c;确保批次质量和一致性&#xff0c;允许更好的批次跟踪&#xff0c;并且报告生成范围更广&#xff0c;上层接口的规定更容易。称重配料系统应根据配料方法、输送机…

APP攻防--ADB基础

进入app包 先使用 adb devices查看链接状态 手机连接成功的 adb shell 获取到手机的一个shell 此时想进入app包时没有权限的&#xff0c;APP包一般在data/data/下。没有执行权限&#xff0c;如图 Permission denied 权限被拒绝 此时需要手机root&#xff0c;root后输入 su …