MD5签名方法

我们默认使用MD5的签名方法,也支持RSA256的签名方式。

MD5签名规则

构造待签名字符串。待签名字符的生成规则如下:所有发送到后端的请求参数均加入签名,除了sign字端

所有参与签名的请求参数都按照名称字符升序排列(参数名称不允许相同)

如果参数值带有中文, 需要制定字符集编码为UTF-8

如果参数值为空,那么该参数不参与签名

将采宝的合作秘钥作为最后一个参数, 参数名为:key, 参数值就是采宝的合作秘钥本身

将请求参数用`&`拼接起来(按照名称字符升序排列)

用MD5算法,对待签名字符串进行加密, 生成的签名数据(32位小写字符), 就是公共参数中sign的值。

签名示例

大家可以根据这个示例,来验证自己的签名结果是否正确。

现有如下参数参与签名:

参数名

参数值

barcode

123123123123

local_order_no

localorderno123123123123

app

zyptestapp

operator_id

axgdfdafd34124

amount

100

un_discount_amount

timestamp

1460512556270

subject

这是一笔支付订单

goods_list

那么生成的待签名字符串为(合作秘钥的值设为:thisistestkey):

amount=100&app=zyptestapp&barcode=123123123123&local_order_no=localorderno123123123123&operator_id=axgdfdafd34124&subject=这是一笔支付订单&timestamp=1460512556270&key=thisistestkey

注:因为un_discount_amount和goods_list两个参数的值为空,所以没有参与签名

签名结果为:

37fd31004368f9e616f277c6436985eb

md5签名方法示例(java)

/**

* 使用md5算法进行加密

*

* @param target

* 要加密的字符串

* @param charset

* 编码(请设置为UTF-8)

* @return 加密后的字符串

*/

public static String encryptWithMD5(String target,String charset) {

String md5Str = null;

try {

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

md5.reset();

byte[] bytes = md5.digest(charset==null?target.getBytes():target.getBytes(charset));

StringBuffer stringBuffer = new StringBuffer();

for (byte b : bytes) {

int bt = b & 0xff;

if (bt < 16) {

stringBuffer.append(0);

}

stringBuffer.append(Integer.toHexString(bt));

}

md5Str = stringBuffer.toString();

} catch (Exception ex) {

logger.error("encrypt error,target:" + target, ex);

}

return md5Str;

}

生成签名串并签名的方法示例

/**

* 对params中的参数进行排序后生成签名串

* @param params 参与签名的参数map

* @param key 签名要用到的加密串

* @return

*/

String sign=null;

StringBuffer sb = new StringBuffer();

//排序

List> infoIds =

new ArrayList>(params.entrySet());

Collections.sort(infoIds, new Comparator>() {

public int compare(Map.Entry o1, Map.Entry o2) {

return (o1.getKey()).toString().compareTo(o2.getKey());

}

});

//对参数数组进行按key升序排列,然后拼接,最后调用5签名方法

int size = infoIds.size();

for(int i = 0; i < size; i++) {

if(CheckUtil.isNotEmpty(infoIds.get(i).getValue())) {//不为空,为空的不参与签名

sb.append(infoIds.get(i).getKey() + "=" + infoIds.get(i).getValue() + "&");

}

}

String newStrTemp = sb.toString()+"key="+key.trim();

//获取sign_method

sign = EncryptionUtil.encryptWithMD5(newStrTemp,"UTF-8");

return sign;

java md5签名算法_MD5请求签名规则相关推荐

  1. php 生成腾讯云签名方法,PHP生成腾讯云COS接口需要的请求签名的相关内容

    这篇文章主要介绍了使用 PHP 创建 COS 接口所需要的请求签名,与官方文档给出的示例做比较,验证算法的正确性,需要的朋友可以参考下 COS和请求签名是什么 COS 是腾讯云对象存储的缩写及简称,请 ...

  2. php图片上传腾讯云cos,PHP生成腾讯云COS接口需要的请求签名

    COS和请求签名是什么 COS 是腾讯云对象存储的缩写及简称,请求签名是第三方在调用COS相关接口时需要按需提供的.经过特定算法创建而成的一组字符串信息,将唯一的标识当前第三方身份,提供通信双方的身份 ...

  3. e签宝认证服务API PHP请求签名鉴权生成

    官方文档 记录日期于2022-12-08,官方可能会随时更新计算方法,以官方为准:一千年以后请忽略此文. e签宝请求签名鉴权官方文档地址. 官方给出了JAVA示例,但对JAVA不熟悉,难理解,搞得折腾 ...

  4. Java使用RSA加密解密签名及校验

    RSA加密解密类: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; i ...

  5. Http请求加密规则(3DES、Base64、HMAC SHA256)

    Http请求加密规则(3DES.Base64.HMAC SHA256) 如果使用了Https请求,那么大多数情况下就无需双方再制定一套加密规则,所以本人讲述的是使用Http请求时,对于一些安全性较高的 ...

  6. 手游客户端被破解后通过服务器对抗脱机挂---pk服务器签名规则

    前言: (10月15日已经再次编辑整理) *这些规则看着多,都可以用des加密来满足,懂原理后工作量很少,正常1天就可以写完,只是一个小窍门 (为什么用des,因为des是需要确保数据完整性才能正确解 ...

  7. 用js将待签名数据以UTF-8的格式转字节流,对字节流进行MD5算法得到的签名字节流,再经过Base64转换为字符串

    最近碰到一个接口是要数字签名的,给的示范是用java写的.一开始没明白直接用了对字节流进行了md5加密,后面在java里面把这段代码运行了一遍才发现md5加密后仍然是字节流,然后在md5中找到了这个 ...

  8. 支付宝请求签名php,支付宝APP之php后台签名以及验签实现方法

    签名和验签在APP端也是可以完成的,考虑到安全问题,签名和验签最好在服务端完成,支付宝官方建议也是这样的,所以php端需要把签名好的参数传给APP端.详细步骤见正文: 一. 下载php支付宝sdk h ...

  9. android JNI调用过程中的方法签名规则

    有了数据类型之间的对应关系,JNI就可以正确识别并转换Java类型,但是Java支持方法重载,仅靠函数名是无法唯一确定一个方法的.于是JNI提供了一套签名规则,用一个字符串来唯一确定一个方法.其规则如 ...

最新文章

  1. java打包_java工程打包(方式一)
  2. 老调重弹:插件式框架开发的一个简单应用
  3. Elasticsearch聚合 之 Date Histogram聚合
  4. 线程的应用-如何应用多线程
  5. 你的 ResNet 是时候更新了
  6. linux查看程序的快捷键,linux操作系统的快捷键及命令讲解
  7. ELK结合Beats工具的搭建使用(Metricbeat、Filebeat、Topbeat)
  8. android ndk问题,Android ndk helloWord 问题集锦
  9. 使用微PE制作纯净版装机U盘(纯小白教程)
  10. 机械制图--零件图--过渡线
  11. web2.0是个异数?
  12. 谈谈 CGI、FastCGI、PHP-CGI、PHP-fpm
  13. Introduction to BouncyCastle with Java
  14. 第6章 垃圾邮件识别
  15. android 获取蓝牙设备id_获取设备唯一ID的几种方式
  16. React native大版本迭代信息记录
  17. python处理实验数据,Python在热敏电阻测量实验数据处理中的应用
  18. python编程计算器_Python设计实现的计算器功能完整实例
  19. 和《超能陆战队》中“大白”硬扯上的关系的职场哲学
  20. ​在沈炜新春致辞中寻找vivo的成功之道

热门文章

  1. 企业图纸文档规范管理措施 图文档管理系统
  2. EasyConnect安装使用教程
  3. European Parliament Proceedings Parallel Corpus-数据集
  4. 通过分箱对连续特征离散化,以提高线性模型的表现
  5. vector 的应用VC++
  6. java员工试用期工作总结
  7. 蚂蚁金服战略入股润和软件,竟然是为了它?
  8. python 报错 can‘t start new thread
  9. 【安全知识分享】ISO9001质量管理体系理解与实施要求(附下载)
  10. 2d手机游戏开发_我的手机游戏如何在2周内获得365K应用商店下载(以及为什么我退出独立游戏开发公司…...