关于系统时间获取问题
编写了一个基于年月加密的程序,程序按月来使用密码。目前遇到一个漏洞,比如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;
}