先交代一下应用场景:我们的软件需要做一个简单的有效期验证保护。初始的想法是

在本地将安装时间、启动时间、当前时间做比较,为了防止记录被修改,记录在注册表的特殊的地方并加密。

我使用了.net自带的rsa加密方法;这样一来,带来了一些麻烦,首先我必须存储公钥,私钥用来加密和解密(解决这个问题时,我采用了相当蠢的办法,我把他们跟时间记录在一起);第二我还得处理因为公私钥可能被改变而引起的异常;当然还有360拦截写入注册表的异常。总之,麻烦一堆。

所幸,后端的同学提供了一个服务,查询当前的Unix时间戳。于是有了这个问题。

 //
// Unix时间戳(timestamp)转换成当地时间的方法
// timestamp转成double后,扩大10000000倍,转成long,得到ltime
// ltime是从格林威治时间的计时起点(1970-01-01 00:00:00)到现在的时间间隔,转成TimeSpan,得到ts
// 计算格林威治的计时起点转成当地时间的DateTime,得到glwzStart
// 用glwzStart加上时间间隔ts,得到当前的当地时间
//
double dtime = double.TryParse(time, out dtime) ? dtime : ;
long ltime = (long)(dtime * );
TimeSpan ts = new TimeSpan(ltime);
DateTime glwzStart = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.Parse("1970-1-1 00:00:00"));
DateTime cur = glwzStart.Add(ts);
if (cur >= DateTime.Parse(ExpirationDate))
return ;
else
return ;

最新文章

  1. poj2485 kruskal与prim
  2. 纪念逝去的岁月——C/C++选择排序
  3. IIS负载均衡的NLB解决方案
  4. Bitset 用法(STL)
  5. Lintcode: Maximum Subarray Difference
  6. (剑指Offer)面试题25:二叉树中和为某一值的路径
  7. Android:查看应用创建的数据库
  8. HeadFirst设计模式读书笔记(4)-工厂模式
  9. 基于visual Studio2013解决C语言竞赛题之1064互质数差1验证
  10. css技巧--整理(1)
  11. ajax2016/4/15 post与get
  12. Linux下部署
  13. ASP.NET MVC TempData使用心得
  14. R实战 第三篇:数据处理(基础)
  15. Java面试宝典笔记录
  16. JS面向对象与面向过程
  17. shell编程规范:引用
  18. Java和.Net在做BS结构项目的比较
  19. 自动化运维工具Ansible的部署步骤详解
  20. HDU 5299 圆扫描线 + 树上删边

热门文章

  1. Newlife商业源码分享
  2. Arduino 各种模块篇 RGB LED灯
  3. 在C中判断变量存储类型(字符常量/数组/动态变量)
  4. 使用Struts2实现文件的上传和下载
  5. cf 323A A. Black-and-White Cube 立体构造 不知道为什么当k为奇数时构造不出来 挺有趣的题目吧
  6. Html+Css实现九大行星动画效果
  7. Spring MVC中的HandlerMapping与HandlerAdapter
  8. OC之知识储备篇
  9. C语言之形参和实参
  10. jquery中这句 .stop(false,true); 什么意思