签名规则说明
1. 将参数先按键值排序(只做一级排序),进行key和value的拼接
2. 拼接完后,在最后面再拼接上分配的 appSecret 然后用sha1对拼接串加密
签名示例
假如传入参数:
$param = array(
'access_token' => '',
'app_key' => '152968d9af768bf084dad750f78d6866',
'once' => '911091697599',
'version' => '1.0',
'sdk_from' => 'java',
'phone' => '13800138000',
'type' => 0,
'client' => '{"channel":"mcontact_md_ahlrj_api_android","imei":"1","version":"v3.9.8"}',
);
1.将参数先按键值排序(只做一级排序),即变成
$param = array(
'access_token' => '',
'app_key' => '152968d9af768bf084dad750f78d6866',
'client' => '{"channel":"mcontact_md_ahlrj_api_android","imei":"1","version":"v3.9.8"}',
'once' => '911091697599',
'phone' => '13800138000',
'sdk_from' => 'java',
'type' => 0,
'version' => '1.0',
);
2.然后拼接起来:
access_token=app_key=152968d9af768bf084dad750f78d6866client={"channel":"mcontact_md_ahlrj_api_android","imei":"1","version":"v3.9.8"}once=911091697599……
3. 拼接完后,在最后面再拼接上分配的 appSecret 然后用sha1对拼接串加密
//////////////////////////////////////////////////////////////
示例代码,仅供参考:
签名生成方式
将需要提交的参数(signature除外),按key做字典排序。 然后 key=value 形式拼接, 然后在后面 拼上 appscret。 再sha1加密
//具体php实现
function generateSignature($params_array, $appsecret) {
if(!$appsecret){
return '';
}
$str = '';
ksort($params_array, SORT_STRING);
foreach ($params_array as $k=>$v) {
$str .= $k."=".$v;
}
$str .= $appsecret;
return sha1($str);
} $signature = generateSignature($params_array, '分配的appscret'); //$params_array 就是需要提交的参数 //具体java实现
public String getNornmalSignature(HashMap<String, String> params, String appscret) {
String signature = null;
Map<String, String> sortedParams = new TreeMap<String, String>(params);
Set<Entry<String, String>> entrys = sortedParams.entrySet();
StringBuilder basestring = new StringBuilder();
for (Entry<String, String> param : entrys) {
basestring.append(param.getKey())
.append("=")
.append(param.getValue() == null ? "" : param.getValue());
}
basestring.append(appscret);
try {
signature = DigestUtils.shaHex(basestring.toString());
} catch (Exception e) {
e.printStackTrace();
}
return signature;
}
//java调用例子
String once1 = new SimpleDateFormat("ssSSSS").format(new Date()) + String.valueOf(Math.random()).substring(2, 8);
HashMap<String, String> hm1 = new HashMap<String, String>(); hm1.put("app_key", app_key);
hm1.put("once", once1);
hm1.put("version", version);
hm1.put("sdk_from", sdk_from);
hm1.put("channel", channel);
hm1.put("mobile", mobile);
……
String signature1 = getNornmalSignature(hm1,appscret);

生成signature的更多相关文章

  1. Token以及签名signature的设计与实现

    LZ第一次给app写开放接口,把自己处理Token的实现记录下来,目的是如果以后遇到好的实现,能在此基础上改进.这一版写法非常粗糙,写出来就是让大家批评的,多多指教,感谢大家. 当初设计这块想达到的效 ...

  2. python接口自动化22-签名(signature)鉴权(authentication)之加密(HEX、MD5、HMAC-SHA256)

    前言 开放的接口为了避免被别人乱调用,浪费服务器资源,这就涉及到签名(Signature)加密了 API 使用签名方法(Signature)对接口进行鉴权(Authentication).每一次请求都 ...

  3. 什么是token及怎样生成token

    什么是token Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即 ...

  4. jwt的应用生成token,redis做储存

    解释一下JWT JWT就是一个字符串,经过加密处理与校验处理的字符串,由三个部分组成.基于token的身份验证可以替代传统的cookie+session身份验证方法.三个部分分别如下: header. ...

  5. signature验证/salt验证/token验证的作用

    1.salt验证: salt是随机生成的一串字符,salt验证的作用是将生成的salt与加密的密码密文拼接后再次加密存储  这样可以是存储在数据库中的密码更加安全 2.signature验证: I.将 ...

  6. 头条小视频和西瓜视频signature签名算法

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 "分析今日头条内小视频和西瓜视频分享后浏览器打开所用的signature签名算法." 上月写的一篇关于使用微信的wxid加好友的文章, ...

  7. token是个什么东西?怎样生成并携带token

    什么是token及怎样生成token  转载自:https://www.cnblogs.com/lufeiludaima/p/pz20190203.html 什么是token Token是服务端生成的 ...

  8. 使用JWT登录生成token

    package com.example.demo.util; import com.auth0.jwt.JWT; import com.auth0.jwt.JWTVerifier; import co ...

  9. WebApi基于Token和签名的验证

    最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久 ...

随机推荐

  1. N!含有多少个 2/5质因子

    编程之美127页,N!中含有质因数2的个数 = [N/2] + [N/4] + [N/8] + [N/16] + ..... 要理解上式,先看 编程之美126页,N!中含有质因数5的个数Z 举例:N ...

  2. BoyerMoore(BM)算法--C#

    因项目需要使用字符串查询算法,在网上搜搜了半天,没有找到C#版的. 索性根据BM机制,用C#实现了一遍.现在贴出了,以备忘记. /// <summary> /// BM算法 /// < ...

  3. How to Fix “ShellExecute failed (2): Is this command correct?” on Notepad++

    Problem: When you click right-click->Edit with Notepad ++ and get the error “ShellExecute failed ...

  4. 2017.2.9日总结--外网IP和内网IP

    Linux自己不能通过自己的外网访问自己必须通过内网访问自己

  5. LeetCode OJ:Search a 2D Matrix(二维数组查找)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  6. <tf-idf + 余弦相似度> 计算文章的相似度

    背景知识: (1)tf-idf 按照词TF-IDF值来衡量该词在该文档中的重要性的指导思想:如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词. ...

  7. php 中 用curl 发送 https 请求

    在 php.ini 中修改配置选项 curl.cainfo = "D:\phpStudy\php\php-5.6.27-nts\pert\cacert.pem" 其中 cacert ...

  8. centos7怎么把语言切换成英语

    一.简介 在Linux的系统中经常碰到字符集导致的错误,本文总结了设置修改系统语言环境的方法步骤. 二.操作步骤 执行如下指令,查看当前使用的系统语言 echo $LANG 执行如下指令,查看系统安装 ...

  9. python学习之函数和函数参数

    #方法的参数定义和默认参数的定义 def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): while True: ok = inp ...

  10. 【前端】XHTML入门笔记

    教程/XHTML 模块/XHTML 标准属性/XHTML 事件属性 XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language). XHTML 元素必 ...