如何在MySQL或C 中以哈希格式验证日期
How to validate dates in Hash format in MySQL or C++
我需要在mySQL或C 中验证哈希(SHA256)格式中的日期。例如:date1 < date2
或date1 > date2
。
我在mysql中有此查询:
SELECT SHA1(CURDATE()) -->'2017-09-06'
和:
SELECT SHA1('2017-09-06') --> '34152f3661d73490ac89b0fe15cb3170aac06bb8'
SELECT SHA1('2017-09-07') --> '0b10f03fb245a6486d6ab5b25a2f050bf87093a5'
但是,如果我使用:
SELECT IF (SHA1('2017-09-06') <= SHA1('2017-09-07') ,'True','False') AS Test;
结果是False
,因此,不正确!
不知道为什么要这样做,但这是您的解决方案。
这是一些假设。
- 您得到了两个日期哈希(两个输入)
- 您确切地知道如何创建日期哈希(例如:始终采用yyyy-mm-dd的格式)
- 您知道目标日期的范围(因此您可以将哈希人倒回原始日期)
所以在psudocode中,您会做这样的事情。
date getDateFromHash(string inputHash) {
date startDate = '1911-01-01';
date endDate = '2017-12-31';
for(date checkDate = startDate; checkDate < endDate; checkDate + 1 day) {
if (sha1(checkDate) = inputHash) { return checkDate }
}
return null;
}
date firstDate = getDateFromHash("0b10f03fb245a6486d6ab5b25a2f050bf87093a5"); // 2017-09-07
date secondDate = getDateFromHash("34152f3661d73490ac89b0fe15cb3170aac06bb8"); // 2017-09-06
if (firstDate > secondDate) {
return true;
} else {
return false;
} // compare using default date operators
但是,老实说,就像评论所说的那样,哈希日期价值没有意义。因此,为什么我只为您丢下quich psudo代码,只是为了指向正确的方向,如果您认真地踩这条路。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 使用Qt C++计算类似Git的SHA1哈希
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 用C++将哈希表写入文件并从文件中恢复
- c++找不到具有相同哈希的无序集合元素
- 哈希文件递归并保存到矢量Cryptopp中
- 对 pair<pair<int,int>pair<int,int unordered_map进行哈希处理>>
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- boost::包含提升单元的元组的哈希值
- 使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
- C++中的并发哈希表
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 在具有开放寻址的哈希表中插入节点 [优化逻辑]
- 与C++哈希表的基础知识混淆
- 如何为位集找到/实现一个好的哈希函数
- MD5哈希的密码盐字符串的格式是什么?
- 如何在MySQL或C 中以哈希格式验证日期