当前位置: 首页 > news >正文

登录接口的密码进行RSA加密Java脚本

做接口/性能测试,也不知道原公司是哪个D毛起的头,说只要是涉及“测试”两个字的事情就是测试的职责范围,自己问题自己解决,于是负责登录模块的某些开发人员不配合,不给接口文档/SwaggerUI也不给加密的脚本,说是网络传输不安全之类的,反正各种理由搪塞,只能通过接口抓包自己判断是什么加密方式,自己写脚本。我就共享出来怎么滴?

1.创建UrlInfo实例

public class UrlInfo {# 协议private String prototype;# 主机private String host;# 端口private String post;# 链接后缀private String uri;@Overridepublic String toString() {return prototype + "://" + host + ":" + post + uri;}public String getPrototype() {return prototype;}public void setPrototype(String prototype) {this.prototype = prototype;}public String getHost() {return host;}public void setHost(String host) {this.host = host;}public String getPost() {return post;}public void setPost(String post) {this.post = post;}public String getUri() {return uri;}public void setUri(String uri) {this.uri = uri;}
}

2.获取公钥、密码加密

import io.restassured.response.Response;import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;import static io.restassured.RestAssured.given;public class RSAPwd {/*** urlInfo基本信息* */public static String getUrl(String prototype,String host,String port,String uri){UrlInfo urlInfo = new UrlInfo();urlInfo.setPrototype(prototype);urlInfo.setHost(host);urlInfo.setPost(port);urlInfo.setUri(uri);return urlInfo.toString();}/*** 获取公钥* @account: 用户名* @url: 请求地址* */public static String getResponsePublicKey(String account,String url){String JsonData = "{\"account\": \"" + account + "\"}";# 发起请求,获取响应结果对象ResponseResponse response = given().contentType("application/json;charset=UTF-8").body(JsonData).when().post(url).then().extract().response();# jsonPath获取公钥参数名data的valuereturn response.jsonPath().get("data").toString();}/*** 密码加密* @pwdStr:待加密密码* @publicKeyBase64:公钥文本* */public static String encryptPassword(String pwdStr,String publicKeyBase64){String result = "";try{PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(publicKeyBase64)));Cipher encryptCipher = Cipher.getInstance("RSA");encryptCipher.init(Cipher.ENCRYPT_MODE,publicKey);byte[] encryptedByte = encryptCipher.doFinal(pwdStr.getBytes());result = Base64.getEncoder().encodeToString(encryptedByte);}catch (Exception e){e.printStackTrace();}return result;}
}

相关文章:

  • 牛客网NC218480统计正负数个数
  • VMware中快速安装与优化Ubuntu全攻略
  • 无人机避障——深蓝学院浙大Fast-planner学习部分(前端部分)
  • SpringBoot基础(静态资源导入)
  • 渗透测试流程-上篇
  • XBL6501/02/03在POE设备上的应用方案
  • 常用的关系性统计方法
  • 受控组件和非受控组件的适用场景分别是什么?
  • GRE作文总结和归纳
  • web第二次课后作业--设计一个注册登录系统
  • 涨薪技术|0到1学会性能测试第65课-SQL捕获阻塞事件
  • Vue3学习(组合式API——reactive()和ref()函数详解)
  • 实验5 DNS协议分析与测量
  • HttpServletRequest常用功能简介-笔记
  • SpringAOP
  • openEuler24.03 LTS下安装MySQL8.0.42
  • Linux 动态库热加载
  • 计量——异方差的检验及其修正
  • 报考叉车证需要参加哪些培训和考试?
  • 24小时不打烊的知识宝库——RFID智能书柜
  • 对谈|“大礼议”:嘉靖皇帝的礼法困境与权力博弈
  • 巴菲特最新调仓:一季度大幅抛售银行股,再现保密仓位
  • 陕西三原高新区违法占用土地,被自然资源局罚款10万元
  • 因港而兴,“长江黄金水道”上的宜宾故事
  • 张广智︱“编年事辑”:打开学人心路历程的窗户
  • 商务部就开展加强战略矿产出口全链条管控工作应询答记者问