zoukankan      html  css  js  c++  java
  • 时间戳

    时间戳(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()
    // CarbonCarbon
    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
  • 相关阅读:
    lambda表达式
    各种模块化简介及演变过程
    filter-api文档
    RegExp正则表达式规则以及常用正则表达式
    各种循环遍历对比
    条件语句对比
    莫队小结
    停更公告
    POJ2728 Desert King
    笛卡尔树Cartesian Tree
  • 原文地址:https://www.cnblogs.com/xfcode/p/11197771.html
Copyright © 2011-2022 走看看