sign加密方法生成

1. 引入包的问题

2. 原因

.pycrypto、pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto,它是一个第三方库,但是已经停止更新

3. 解决方法

--直接安装:pip install pycryptodome

3.但是,在使用的时候导入模块是有问题的,这个时候只要修改一个文件夹的名称就可以完美解决这个问题,

Python\Python36\Lib\site-packages,找到这个路径,下面有一个文件夹叫做crypto,将小写c改成大写C就ok了

4. 核心加密算法

def get_sign(data):logging.warning(f"-------------生成sign的传入的请求体数据:{data}")PRIVATE_KEY_2 = '''MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMNvMFAJ5Ut6Yyba6xndMOl5yOTEU8T/oCzFYAbsnOxcpTHij7xSr8ls1YMv8AQf2igiIK8wJj3y52M2AiMFaDcnkhJ0cUDRRVMMYmuZSWiOpUcH+ET5q9jJH56ZT90trjqab987gvk5fHnBa0cM4HHYmo7xa+Qh11CVLdkeKmOhAgMBAAECgYB/SR+yQX+x1RhW6iZNRh7hMYyCUswsdkEgZ7zPRbQ+zWhaQTFUepY7HkNBmis8xHIVyYR4FWgS2O2TVE23+YGRpudEUMS/C/PcolTQWYBlR3Bvqsdw88tdurDWoHg/+GKaHlR5RBj2zVYPf6meXg/mYLt9xXRU0yDgyXxEWGsgAQJBAOqHXfS7Jfi8giLjwgAN1kbfdSh1WqSalnXdELrM3VZFW/+q9AQI0TOrJsCYfbzyIzbwl6a7DCUj5LOQZEG2tUECQQDVU5Fy6w1uXDDP3U/ccuyayu9ixHVWHv8Rdprpe2RPDr9EiF6tqe1y30gTywBZCJkLpEPpNK4zB1Daps08tDZhAkEAocxD0JvwRVrfuOxCIcFqC7kL3Z6gqyCPHr8lVIoTRPpSzt6Eu+fNVAUGliZd0KWID9YJ+ZffeBv8IrlBwWgoQQJBALI71DZTtTETzaSen+7sBkt+amv3AKIn26zXj66r7a8v/xZfadtnMoDblPkUjwHUcSqM4ECkRzdTUXaeDrQ9TYECQD7Fx4ZEphiWIfKSS+W4C9ZYpx6KcRLSehG9tHBNRc4CA/dRZprdRQL7ZpJLm2xhaXFQ0RGyzEyZEDS3Ugm+7fI='''privateKey = PRIVATE_KEY_2private_keyBytes = base64.b64decode(privateKey)priKey = RSA.importKey(private_keyBytes)signer = PKCS1_v1_5.new(priKey)hash_obj = MD5.new(data.encode('utf-8'))signature = base64.b64encode(signer.sign(hash_obj))import urllib.parseda = urllib.parse.quote(signature)return da

5. sign1生成依赖动态参数

5.1. get请求;

device_id + device_type + device_ver + timestamp + token

动态参数:stimestamp token

解决方案:提升级别,全抽离前置处理

def setup_hooks_request(request):logging.warning(f"---step前置的request信息:{request}")_timestamp = get_pp_timestamp()multi_env = {'multi_env': 'wl'}_device_id = get_device_id()_device_type = get_device_type()_device_ver = get_device_ver()_token = get_token()data = get_data(_timestamp, _token)_get_pp_sign = get_sign(data)pp_device_id = {'pp_device_id': _device_id}pp_device_type = {'pp_device_type': _device_type}pp_client_ver = {'pp_client_ver': _device_ver}pp_token = {'pp_token': _token}pp_req_sign = {'pp_req_sign': _get_pp_sign}pp_timestamp = {'pp_timestamp': _timestamp}header = {'multi_env': multi_env}header = {'pp_device_id': pp_device_id}header = {'pp_device_type': pp_device_type}header = {'pp_client_ver': pp_client_ver}header = {'pp_token': pp_token}header = {'pp_req_sign': pp_req_sign}header = {'pp_timestamp': pp_timestamp}if 'headers' in request:if bool(request['headers']) is True:request['headers'].update(multi_env)request['headers'].update(pp_device_id)request['headers'].update(pp_device_type)request['headers'].update(pp_client_ver)request['headers'].update(pp_token)request['headers'].update(pp_req_sign)request['headers'].update(pp_timestamp)else:request['headers'].update(header)else:request['headers'] = headerreturn request

6. sign2依赖body数据

6.1. post请求

6.1.1. request级别提前参数化data

# 参数化body数据
.with_variables(**{"data": '{"month": "2024-03"}'})# 单独header hook
.with_headers(**{"pp_req_sign_2": "${get_pp_sign(data=$data)}",})

6.1.2. 获取request后,函数处理

request参数信息

---step前置的request信息:{'method': 'POST', 'url': '/api/online-agent-product/annualBill/monthSavings', 'params': {}, 'req_json': None, 'data': '{"month": "2024-03"}', 'cookies': {}, 'timeout': 
120, 'allow_redirects': True, 'verify': False, 'headers': {'accept-encoding': 'gzip', 'content-length': '19', 'content-type': 'application/json; charset=UTF-8', 'pp_channel': 'googleplay', 'pp_req_sign_2': 'AU3DMz02Hda0Y8m2Dv
kOz2%2BOuHD1t/pR3yIPmudCer8BOGYOBp1pnzfCh6ttOe7BfYKsrE%2Bhluts9tkcCbM7/HFhOH8RQaUSfl6LkM9mqpaNb9FmBZTBUMHXk9dcqHAlENtdVUUvbUWLQEr1XNZK/OW0AXoqhm51gncxXVXL7hc%3D', 'user-agent': 'PalmPay/5.3.0&603020703 (Android 13)', 'HRUN-Request-ID': 'HRUN-a5eec8e9-de59-487c-8979-0a8fb0c19436-684135'}}

关键代码

.with_data('{"month": "2024-03"}')
# 请求体参数body_data = request.get('data') if request.get('data') else request.get('req_json')if body_data:sign2 = get_sign(body_data)else:sign2 = _get_pp_sign

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日韩媒体宣传案例分析:CloudNEO 为您提供海外媒体宣传最佳途径

近年来,随着互联网的迅速发展和全球化的加速推进,海外市场对于企业的重要性日益凸显。尤其是在亚洲地区,日本和韩国作为亚洲最具活力和潜力的市场之一,成为众多企业争相开拓的目标。在这个过程中,媒体宣传不仅是企业推…

教你如何在公众号商城与小程序商城间做出明智之选

随着数字化时代的快速发展,微信公众号和小程序商城这两种电商解决方案各自展现了不同的魅力和挑战。对于计划自主搭建电商平台的用户而言,如何在这两者间作出明智的抉择,无疑是一个值得深思的问题。本文旨在剖析公众号商城和小程序商城的优劣…

Docker上部署LPG(loki+promtail+grafana)踩坑复盘

Docker上部署LPG(lokipromtailgrafana)踩坑复盘 声明网上配置部署踩坑 声明 参考掘金文章:https://juejin.cn/post/7008424451704356872 版本高的用docker compose命令,版本低的用docker-compose 按照文章描述,主要准备…

httprunner参数化

1. 示例 引入对应的Parameters 1.1. CSV参数 from httprunner import HttpRunner, Config, Step, RunRequest, Parameters pytest.mark.parametrize("param", Parameters({"mobile_phone-pwd": "${P(csv_data/mobile_phone-pwd.csv)}"}))def …

线性代数笔记14--投影

1. 一维空间投影 p X A e B − p B − X A A ⊤ e 0 A ⊤ ( B − X A ) 0 X A ⊤ A A ⊤ B X A ⊤ B A ⊤ A p X A A A ⊤ B A ⊤ A pXA\\ eB-pB-XA\\ A^{\top}e0\\ A^{\top}(B-XA)0\\ XA^{\top}AA^{\top}B\\ X\frac{A^{\top}B}{A^{\top}A}\\ pXAA\frac{A^{\top}B}{A^…

18个惊艳的可视化大屏(第23辑):电子政务,一目了然如胸。

hello,我是贝格前端工场老司机,这是第23期了,本次带来可视化大屏在电子政务领域的应应用案例,喜欢文章的别忘点赞关注,文章底部也有其他行业的案例。 数据展示与监控: 可视化大屏可以将政务数据以图表、地…

【校园安全】支小蜜防校园霸凌语音识别系统的好处

在校园安全领域,防校园霸凌语音识别系统的出现,为预防和应对校园霸凌行为提供了新的技术手段。本文将探讨防校园霸凌语音识别系统的好处,并分析其在校园安全建设中的重要作用。 通过安装在校园各个角落的语音识别设备,系统能够捕…

新品发布会注意事项有哪些?如何邀约媒体到场发布

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 新品发布会的注意事项以及邀约媒体到场发布的方法如下: 一、新品发布会注意事项: 明确活动目的和主题:确定新品发布会要传达的信息和目标,…

UVA378 Intersecting Lines 题解

UVA378 Intersecting Lines 题解 怎么这么多点斜式邪教啊。 解法 在计算几何中,我们应该尽可能地避免使用浮点数的计算,尽可能地使用向量计算。 本篇题解默认读者具有向量基础。 为了方便讲解,我们将输入的四个点分别记作 A , B , C , …

md5绕过

文章目录 \\和\\\md5数组绕过科学计数法绕过双md加密md5碰撞Hash长度攻击 下面会以同一道题给大家演示: (题目来源与nssctf) 和 在php代码中我们会看到和,虽然两个都是表示相等,但是在细节上会有所部区别 :是弱比较,只…

js 实现点击按钮小球加入购物车动画

本文旨在实现类似点击按钮实现小球加入购物车效果。 使用技术: Vue2使用 Pubsub 监听按钮点击事件(如果不想用也可以自己改造下)监听 onmousemove 来获取按钮点击时的鼠标位置 小球组件: html css: 小球父元素&am…

品牌如何玩转饥饿营销?媒介盒子分享

饥饿营销是许多品牌都会用的策略,从“限定发售”、“先到先得”、“季节限定”、“专属VIP”等都属于饥饿营销的范畴,为什么饥饿营销屡试不爽,原因就在于人们面对同等的收益和损失时,损失会令他们更加难以接受。今天媒介盒子就来和…