签名规则说明
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. IIC时序图

  2. php调用API支付接口(转自刘68)

    首先访问  https://charging.teegon.com/  注册账号, 找到开发配置   记下client_id和client_secret. 点击 天工开放平台 点击天工收银 点击  S ...

  3. c/s和b/s的区别

    一.C/S 架构 1. 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库 ...

  4. hihocoder-1483区间价值 (二分+尺取法)

    题目链接: 区间价值 给定n个数A1...An,小Ho想了解AL..AR中有多少对元素值相同.小Ho把这个数目定义为区间[L,R]的价值,用v[L,R]表示. 例如1 1 1 2 2这五个数所组成的区 ...

  5. PS基础教程[1]如何制作微信泡泡

    PS是很多朋友都很喜欢额一款图像处理软件,我们可以使用PS制作很多的效果,本系列经验教程的起源就来源于知道中这位朋友问的微信泡泡如何使用,下面就来简单的分享一下. 微信泡泡制作方法 有很多的方法可以制 ...

  6. 剑指offer-第五章优化时间和空间效率(从1到n的整数中1出现的次数)

    题目:输入一个整数n,从1到n这n个十进制整数中1出现的次数. 思路1:对1到n中的任意一个数i对其进行求余数来判断个位是否为1,然后再求除数,判断十位是否为1.统计出1的个数.然后对1到n用一个循环 ...

  7. 【知识笔记】前端样式CSS

    一.页脚如何始终固定在页面底部显示 想要达到页脚固定在页面底部显示,也就是当页面主体高度在浏览器高度范围内时页脚靠浏览器底部,超出浏览器高度时页脚在页面主体下方,相当于在高度上的自适应. 乍看似乎很简 ...

  8. [Luogu4475]巧克力王国

    luogu 题意 平面上有\(n\)个点,每个点\((x_i,y_i)\),价值为\(w_i\).\(m\)次询问,每次给出\(a_i,b_i,c_i\)求满足\(a_ix+b_iy<c_i\) ...

  9. 【策略】一致性Hash算法

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...

  10. 【LeetCode】汇总

    此贴为汇总贴 673. Number of Longest Increasing Subsequence 075. Sort Colors 009. Palindrome Number 008. St ...