时间戳

作者: faith3729 | 来源:发表于2016-04-06 14:12 被阅读931次

    时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。

    定义

    时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

    分类

    1.自建时间戳:此类时间戳是通过时间接收设备(如GPS,CDMA,北斗卫星)来获取时间到时间戳服务器上,并通过时间戳服务器签发时间戳证书。此种时间戳可用来企业内部责任认定,在法庭认证时并不具备法律效力。因其在通过时间接收设备接收时间时存在被篡改的可能,故此不能做为法律依据。
    2.具有法律的效力的时间戳:它是由我国中科院国家授时中心与北京联合信任技术服务有限公司负责建设的我国第三方可信时间戳认证服务。由国家授时中心负责时间的授时与守时监测。因其守时监测功能而保障时间戳证书中的时间的准确性和不被篡改。获取时间戳平台有“大众版权保护平台”[1]
    ,可与我国中科院国家授时中心时间同步。

    组成部分

    时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分:

    (1)需加时间戳的文件的摘要(digest);

    (2)DTS收到文件的日期和时间;

    (3)DTS的数字签名

    一般来说,时间戳产生的过程为:用户首先将需要加时间戳的文件用Hash编码加密形成摘要,然后将该摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名),然后送回用户。

    书面签署文件的时间是由签署人自己写上的,而数字时间戳则不然,它是由认证单位DTS来加的,以DTS收到文件的时间为依据。

    函数中

    Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如Linux系统),也在许多其他操作系统中被广泛采用。

    php中获取时间戳的方法是:time();Date();

    Linux中获取时间戳的方法是:date +%s

    Linux中将时间戳转换为日期: date -d "@<timestamp>"

    编程调用时间戳

    【编程调用】时间戳来源

    token表的设计

    token表设计.png

    数据表

    USE [FD_EO_DATA_f]
    GO
    if exists (select 1
            from  sysobjects
           where  id = object_id('UserToken')
            and   type = 'U')
       drop table UserToken
    go
    CREATE TABLE [dbo].[UserToken](
    TokenID int IDENTITY(1,1) primary key NOT NULL,
    UserID   int NULL,
    UserName varchar(500) NULL,
    Token varchar(500) NULL,
    LoginTimestamp int NULL,
    ClientType varchar(500) NULL,
    Code int NULL
    )
    

    获取时间戳方法一

        long TemTime = DateTimeToUnixTimestamp(DateTime.Now);
        /// <summary>
        /// 日期转换成unix时间戳
        /// </summary>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        public static long DateTimeToUnixTimestamp(DateTime dateTime)
        {
            var start = new DateTime(1970, 1, 1, 0, 0, 0, dateTime.Kind);
            return Convert.ToInt64((dateTime - start).TotalSeconds);
        }
    
        /// <summary>
        /// unix时间戳转换成日期
        /// </summary>
        /// <param name="unixTimeStamp">时间戳(秒)</param>
        /// <returns></returns>
        public static DateTime UnixTimestampToDateTime(this DateTime target, long timestamp)
        {
            var start = new DateTime(1970, 1, 1, 0, 0, 0, target.Kind);
            return start.AddSeconds(timestamp);
        }
    

    获取时间戳方法二

    long TemTime = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;

    相关文章

      网友评论

          本文标题:时间戳

          本文链接:https://www.haomeiwen.com/subject/zgcmlttx.html