通常使用的方式就是把参数拼接,当前项目AppKey,双方约定的“密钥”,加入到Dictionary字典集中,按ABCD顺序进行排序,最后在MD5+加密.客户端将加密字符串和请求参数一块儿发送给服务器。服务器按照php
上述规则拼接加密后,与传入过来的加密字符串比较是否相等java
上面的方式进行加密,就没法解决防复用的问题,这时须要在客户端和服务端分别生成UTC的时间戳,这个UTC是防止你的客户端与服务端不在同一个时区,呵呵,而后把时间戳timestamp拼在密文里就能够了,至于防复用的有效性服务器
各类语言获取时间戳的方法:加密
Swift | NSDate().timeIntervalSince1970 |
Go | import ( "time" ) int32(time.Now().Unix()) |
Java | // pure java (int) (System.currentTimeMillis() / 1000) // joda (int) (DateTime.now().getMillis() / 1000) |
JavaScript | Math.round(new Date() / 1000) |
Objective-C | [[NSDate date] timeIntervalSince1970] |
MySQL | SELECT unix_timestamp(now()) |
SQLite | SELECT strftime('%s', 'now') |
Erlang | calendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600. |
PHP | // pure php time() // Carbon\Carbon Carbon::now()->timestamp |
Python | import time time.time() |
Ruby | Time.now.to_i |
Shell | date +%s |
Groovy | (new Date().time / 1000).intValue() |
Lua | os.time() |
.NET/C# | (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 |