时间戳
程序员文章站
2023-11-16 16:19:58
时间戳(timestamp): 通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。定义: 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。 作用: 防篡改 一般使用的方式就是把参 ......
时间戳(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 |