時間戳

時間戳(timestamp):

    一般是一個字符序列,惟一地標識某一刻的時間。數字時間戳技術是數字簽名技術一種變種的應用。
定義:
    時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至如今的總秒數。

做用:

      防篡改

      通常使用的方式就是把參數拼接,當前項目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
相關文章
相關標籤/搜索