如何在MySQL或C ++中以哈希格式验证日期

时间:2017-09-06 19:46:31

标签: c++ mysql hash sha256 sha

我需要在MySQL或C ++中以Hash(SHA256)格式验证日期。 例如:date1 < date2date1 > 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,因此不正确!

1 个答案:

答案 0 :(得分:-1)

不知道你为什么要这样做,但这里有适合你的解决方案。

这里有一些假设。

  1. 您获得了两个日期哈希(两个输入)
  2. 您确切知道如何创建日期哈希(EG:始终采用YYYY-MM-DD格式)
  3. 您知道目标日期的范围(因此您可以将哈希值反转回原始日期)
  4. 所以在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
    

    但老实说,就像评论所说的那样,没有散列日期值的重点。因此,如果你真的想要沿着这条路走下去,为什么我只是为你指出正确的方向,只为你指出了一个quud psudo代码。