213°

时间戳

时间戳(timestamp):

    通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。
定义:
    时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

作用:

      防篡改

      一般使用的方式就是把参数拼接,当前项目AppKey,双方约定的“密钥”,加入到Dictionary字典集中,按ABCD顺序进行排序,最后在MD5+加密.客户端将加密字符串和请求参数一起发送给服务器。服务器按照

上述规则拼接加密后,与传入过来的加密字符串比较是否相等

   防复用

        上面的方式进行加密,就无法解决防复用的问题,这时需要在客户端和服务端分别生成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

原文链接:https://www.cnblogs.com/xfcode/p/11197771.html

全部评论: 0

    我有话说: