| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:关于系统时间获取问题
只看楼主 加入收藏
tangqang_han
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-6-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
关于系统时间获取问题
编写了一个基于年月加密的程序,程序按月来使用密码。
目前遇到一个漏洞,比如6月密码文件已经提供,到了7月应该用新的密码文件,程序才能运行,可是程序有一个BUG,可以将系统时间暂时改成6月,等密码文件验证成功后,再改成7月。
我在程序头部加入了一个验证条件,就是每次验证完密码重新执行时,需要验证月份是否与核对密码时一致。

大神如果忙,上面的内容可以忽略,问题的关键:
定义两个变量,存储当前的月份,修改系统月份后,重新获取月份,但是这个月份仍然是之前获取的那个,不会变化,为什么呢?
yea=(ptr->tm_year+1900);            //年
mou=(ptr->tm_mon+1);                //月
day=ptr->tm_mday;                //日
hou=ptr->tm_hour;                //获取时钟
min=ptr->tm_min;                //获取分钟,时钟与分钟都为全局变量,调用函数进行转换。
sec=ptr->tm_sec;                //秒
check_mou=mou;                //当前获取的月份,赋值到check_mou.

/****
程序运行,在此时,系统月份发生了更改
***/
mou=(ptr->tm_mon+1);        //重新获取月份
if(check_mou!=mou)          //如果月份发生修改,此时check_mou 与 mou应该是不相等的。但是结果却是相等的,为什么呢?要怎么改?
{
goto pw_check;
}
搜索更多相关主题的帖子: 加密 密码 
2017-06-04 16:13
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:7 
月份不改变有什么稀奇,除非你是月底凌晨零点左右调试才看得出变化来。
char str[3];
SYSTEMTIME sys;
itoa(sys.wMonth,str,10);
2017-06-04 16:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
mou=(ptr->tm_mon+1);        //重新获取月份
这就是重新获取月份?
2017-06-05 08:21
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
我这里测试没有问题呢

程序代码:
#include <stdio.h>  
#include <time.h>  
#include <stdlib.h>

int main()  
{  
    time_t timep;  
    struct tm *p;  
    time(&timep);  
    p =localtime(&timep); //此函数获得的tm结构体的时间,是已经进行过时区转化为本地时间  
    printf("Year:  %d\n", 1900+p->tm_year);  
    printf("Month:  %d\n", 1+p->tm_mon);  
    printf("Day:  %d\n", p->tm_mday);  
    system("pause");  //等待修改系统日期
    time(&timep);  
    p =localtime(&timep); //此函数获得的tm结构体的时间,是已经进行过时区转化为本地时间  
    printf("Year:  %d\n", 1900+p->tm_year);  
    printf("Month:  %d\n", 1+p->tm_mon);  
    printf("Day:  %d\n", p->tm_mday);  
     return 0;
}  
/*
Year:  2017
Month:  6
Day:  5
请按任意键继续. . .
Year:  2017
Month:  4
Day:  5
请按任意键继续. . .
*/

DO IT YOURSELF !
2017-06-05 09:21
快速回复:关于系统时间获取问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020005 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved