简介

参数签名可以保证开发的者的信息被冒用后,信息不会被泄露和受损。原因在于接入者和提供者都会对每一次的接口访问进行签名和验证。

签名sign的方式是目前比较常用的方式。

第1步:接入者把需求访问的接口的所有必要的参数信息(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母顺序排序。拼接成字符串

第2步: 然后把排序后的参数按参数1值1参数2值2…参数n值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,的方式拼接成一个字符串。

第3步: 把分配给接入方的验证密钥key(或者是提供者提供的一个SECRET_KEY,这个SECRET_KEY只有接入者和提供者知道)拼接在第2步得到的字符串前面。

第4步:对加入密匙key的字符串进行加密或是摘要(用MD5或是SHA1摘要的比较多)

第5步:对MD5的摘要结果转成大写然后写成字符串,传给参数sign

举例:

假设传输的数据是

http://www.xxx.com/interface.aspx?sign=sign_value&p2=v2&p1=v1&method=cancel&p3=&pn=vn

(实际情况最好是通过post方式发送),

其中sign参数对应的sign_value就是签名的值。

第一步,拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,

剩下p2=v2&p1=v1&method=cancel&pn=vn,

然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.

第二步,然后做参数名和值的拼接,最后得到methodcancelp1v1p2v2pnvn

第三步,在上面拼接得到的字符串前加上验证密钥key,我们假设是abc,

得到新的字符串abcmethodcancelp1v1p2v2pnvn

第四步,然后将这个字符串进行md5计算,假设得到的是abcdef,

然后转为大写,得到ABCDEF这个值即为sign签名值。

注意,计算md5之前请确保接口与接入方的字符串编码一致,

如统一使用utf-8编码或者GBK编码,如果编码方式不一致则计算出来的签名会校验失败。

服务器用密匙key对参数进行同样的MD5摘要算法,比对sign值

MD5摘要

MD5即Message-Digest

Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等

jmeter的MD5摘要算法

我的Jmeter3.2版本已经没有了_MD5这个函数了。

所以要用MD5对参数进行摘要,我们需要自己导入MD5摘要算法的jar包

用Eclipse编写一个java的MD5摘要算法的jar包,以下是操作步骤图

MD5摘要算法在java中的编码

Jackmd5.java文件编码如下

package

JACK.MD5;

import

java.security.MessageDigest;

import

java.security.NoSuchAlgorithmException;

public class JACKMD5 {

//创建一个类LMFMD5

public String MD5(String sourceStr) {

String result = "";

try {

MessageDigest md = MessageDigest.getInstance("MD5");

// 生成一个MD5加密计算摘要

md.update(sourceStr.getBytes());

// 使用指定的byte数组更新摘要

byte b[] = md.digest();

// 把密文转换成十六进制的字符串形式

int i;

StringBuffer buf = new StringBuffer("");

for (int offset = 0; offset < b.length; offset++) {

i = b[offset];

if (i < 0)

i += 256;

if (i < 16)

buf.append("0");

buf.append(Integer.toHexString(i));

}

result = buf.toString();

System.out.println("MD5(" + sourceStr + ",32) =

" + result);

//

System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8,

24));

// 注释的是md5的16位取值

} catch (NoSuchAlgorithmException e) {

System.out.println(e);

}

return result;

}

}

Test.java文件编码如下:

package

JACK.MD5;

import

JACK.MD5.JACKMD5;

public class test {

public static void main (String[] args) {

String res = new JACKMD5().MD5("jack的MD5加密jar包");

System.out.println(res);

}

}

接下来是导出jar包操作:

1、点击export …

下面是导出的jar包,把MD5摘要算法的jar包放入jmeter的lib\ext目录里面里面

Jmeter的BeanShell Sampler 和Debug sampler创建

import JACK.MD5.JACKMD5;

String res = new JACKMD5().MD5("jack测试md5的jar包");

System.out.printIn(res);

vars.put("md5",res.toString())

java md5加密 jar包_练习MD5加密jar包编写相关推荐

  1. cmd jar 无效_为什么我的JAR文件以CMD执行,而不是双击执行?

    因此,我一直在编写一个简单的3D GUI应用程序,旨在让用户只需双击JAR文件即可使用.在将其放入JAR文件之前,它可以正常工作,并且在命令提示符下运行时(在jar文件的目录中键入" jav ...

  2. fiddler everywhere手机抓包_基于移动端抓包使用Fiddler模拟弱网测试

    随着移动互联网的发展,移动端测试工作也提上日程,那移动互联网测试与web测试有什么不一样?首先它们架构不一样,再者基于的场景不一样,PC端网络基本固定宽带,而移动互联的网络测试一般分为:2G.3G.4 ...

  3. tcpdump抓两个网卡的包_如何抓取网络包?两个方法告诉你

    本文转载自[微信公众号:手机电脑双黑客,ID:heikestudio],经微信公众号授权转载,如需转载与原文作者联系 世界那么大,谢谢你来看我!!关注我你就是个网络.电脑.手机小达人 显形" ...

  4. java 克隆对象工具类_关于dorado-core源码包中CloneUtils克隆工具类对对象进行克隆复制操作...

    一.前言 基于dorado.core.jar开源包中的com.bstek.dorado.util.CloneUtils克隆工具类,对对象进行通过java.lang.reflect.Method映射克隆 ...

  5. mave本地导入mysql的jar包_将本地的jar包引入到maven项目中

    首先进入到maven的目录下,并且将要引入的jar包也放在这个目录下 然后执行命令 mvn install:install-file -Dfile=checkDataAdapter-api.jar - ...

  6. smtp java 抓包_[Wireshark]_003_电子邮件抓包分析

    电子邮件是我们的生活工作中经常使用的一种服务,用来联系世界各地的朋友,客户.下面我们就用Wireshark对电子邮件进行抓包. 准备工作: 邮件客户端一款(Outlook,Foxmail,KooMai ...

  7. java.util.list源码_关于fest-util源码包Collections集合工具类过滤、判空、格式化及复制克隆处理...

    一.前言 关于fest-util源码包org.fest.util.Collections集合处理类,实现对数组转换List序列集合.集合duplicatesFrom克隆复制.集合判空isEmpty.并 ...

  8. 我的世界java版怎么加整合包_我的世界整合包入门攻略 整合包怎么使用

    我的世界整合包入门攻略,由齐齐乐小白兔带来.有玩家问我的世界整合包怎么使用,不清楚的看下我的世界整合包入门攻略吧. java7和java8基本无区别. 对于整合包 1.7.2及以下的forge(包含部 ...

  9. mysqlcp30下载最新jar包_三星S20FE刷机包(系统升级刷机最新官方固件包下载)

    三星GalaxyS20FE搭载高通骁龙865处理器,支持无线快充,最新系统版本已经更新,新版本改善了触摸功能的稳定性,应用了最新的安卓安全补丁,提高了设备的安全性,三星Galaxy S20 FE(5G ...

最新文章

  1. 翻译BonoboService官网的安装教程
  2. python各进制、字节串间的转换
  3. swiper.js 多图片页面的懒加载lazyLoading
  4. the enigma x64_【一期】什么是x64、x86,它们有什么区别?
  5. C~K要找女朋友了!!!_JAVA
  6. 一句代码实现 HTML5 语音搜索
  7. 在理解通用近似定理之前,你可能都不会理解神经网络
  8. git 查看修改用户名
  9. 构建嵌入式linux系统_用于构建嵌入式Linux系统的4种工具
  10. python骰子游戏分析_python 用python写一个骰子游戏
  11. Matlab打开文件替换变量,读取matlab某个路径下的“.mat”文件,改变文件中的内容,并以原名字,变量保存...
  12. 4-算法 校门外的树
  13. 站点的安全防范都是后端的职责?非也,Web前端安全同样不可忽视
  14. 计算机网络——报文格式
  15. android 微信跨境支付,微信跨境支付已在超过49个境外国家和地区合规接入
  16. 计算机dns ip在哪设置,电脑dns在哪里设置具体方法
  17. OpenCV手掌识别
  18. 生态 | 南大通用GBase 8a与Suma完成兼容性互认证
  19. 【考试记录】Apsara Clouder基础技能认证:实现调用API接口
  20. Edge Blocker(微软edge浏览器禁用工具)绿色单文件版V1.7 | 怎么关闭edge浏览器 | 能将win10浏览器edge换成ie浏览器

热门文章

  1. k8s中kubectl陈述式/声明式资源管理
  2. 苹果12app显示服务器无响应,苹果iPhone12变卡或APP卡死怎么办 iPhone卡顿原因及解决方法...
  3. [附源码]java毕业设计家庭医生系统
  4. DDD专栏12、专栏总结 走出自己的DDD
  5. Kappa系数简单介绍
  6. C语言高级知识锦集(一)——头文件的格式
  7. Sentinel:资源与规则定义 | Spring Cloud 20
  8. 常用的simulink控制工具箱的函数
  9. mysql清空表命令-deletetruncate详解
  10. 10期16年3月博客期刊