欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

时间戳

程序员文章站 2022-06-21 09:48:15
时间戳(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