热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jsrsa验签_Postman报文进行加密之RSA+Bate64

最近在项目接口测试中使用postman,对于一般的非加密HTTP请求可以很方便直接的测试,但是有些需要签名验签的报文,就需要对报文进行加解

ef69aef8f4e94acb96bbce2bfb1fb63f.png

最近在项目接口测试中使用postman,对于一般的非加密HTTP请求可以很方便直接的测试,但是有些需要签名验签的报文,就需要对报文进行加解密处理,在实际工作过程中,参考了网络上共享的资源,下面对自己工作过程做一次记录,以及自己遇到的问题进行补充。

1d0999bc1ceca8d119a9aad0124da4a8.gif

 大体说一下流程:

请求的源报文需要把参数(除sign)按照字母从a-z顺序先进行排序;

对排序后参数的值拼接成字符串即成源字符串;

用对方的RSA私钥对源字符串进行RSA算法加密生产签名sign值;

把该值传递给参数sign,对新的报文进行AES签名得到值作为正式报文中的参数encdata的值;

使用自有RSA公钥对AES密码进行RSA算法签名,得到的值作为正式报文enckey的值,新的报文生产后再发起HTTP请求。

最终的报文结构:

7e9f7ecbcb01115545039f6b74f1dd4f.png

"{{encdata}}"、"{{enckey}}"需要在postman中定义的变量,变量定义设置不在这里详细说明。

引入forge.js

因为postman自带的加密函数是cryptoJS,不能满足数字RSA-SHA1签名,即java里的SHA1WithRSA,因此需要接入第三方库,这里找到forge.js。forge的GitHub地址https://github.com/digitalbazaar/forge。

5a8423dd281b3637246450901f21ca55.png

Forge.js两种使用方式,第一种:需要下载forge.js并在本地搭建服务,在加密过程中需要调用该服务。

13860e3380840f0086956fbb271b439a.png

在Pre-request Script中使用:

aa0678e0d0291fbce3b8b5c9c31fa749.png

第二种使用方式,复制forge.js文件的所有内容,在postman中添加forgeJS变量,值设置为forge.js文件中的所有内容。

a8d0923df3261b9bf26b6997fced1e47.png

这里使用的第一种搭建服务的方法,因为第二种方法forge.js文件太大,导致设置变量时卡死。

    对源字符串进行RSA签名

         具体的报文拼接就不再这里详细说明,假如拼接后的源字符串为“15547905120004109231993051800161200155235582900015011385365”,然后使用RSA进行私钥签名,

6a2b0ba188c93603f94d4a64e1931ca2.png

efa2aa81c172e5d5387089dc6f37e25e.png

这里的encrypt_key私钥,你需要换成自己项目的私钥。

Encryption函数实现私钥签名,使用了forge项目中的

576fc281f4fbb9c0400a2d30b958dfaa.png

获取的签名sign需要进行Bate64编码,使用forge.util.encode64(sig)实现。

在我们项目中,实际获取的sText签名需要传递给源报文参数sign,进行AES加密。

var signText = '{"endDate":1554790512000,"pageNo":1,"Id":"410923199305180016","userPhone":"15011385365","sign":"'+sText+'","pageSize":200,"startDate":1552355829000}';

RSA签名就写这些,接下来写AES加密。

▓▓▓▓▓▓▓▓▓▓▓░░░░努力加载中……

参考网络资源如下:

https://github.com/digitalbazaar/forge

https://testerhome.com/topics/14869

https://www.jianshu.com/p/2eb5cfb782cb

https://blog.csdn.net/majinggogogo/article/details/106589758

感谢各位的分享。




推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
author-avatar
临临临峰_547
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有