【问题标题】:Equality of two different arrays两个不同数组的相等性
【发布时间】:2015-01-01 03:28:25
【问题描述】:

如何比较 t2 中的结果(哈希值)

unsigned char t2[128];

SHA1(t1, strlen(t1),t2);

我有另一个哈希值unsigned char t3[128]; 作为“字符串”(字符序列)?

元素相等失败,打印 t1 时出现奇怪的符号

【问题讨论】:

    标签: c hash openssl sha


    【解决方案1】:

    您的问题需要进一步澄清。不过,

    Elementwise equality fails and weird symbols appear when printing t1

    从这一行来看,数组t1 似乎没有正确终止NULL,即不适合用作string

    【讨论】:

      【解决方案2】:

      我假设您所有的 tx 数组都是哈希值:查看 SHA1 联机帮助页没有关于 NULL 终止字节或字符编码的信息。它大约是bytes,所以我想你不应该尝试将它打印为字符串(即使用%s)。

      // print t1 bytes
      for(size_t i=0; i<128; i++)
      {
          printf("0x%2X ", t1[i]);
      }
      

      AND,strlen 可能会返回垃圾,请改用显式长度:

      SHA1(t1, 128, t2);
      

      所以要比较您的哈希值(相同长度),您可以使用:

      int res = memcmp(t2, t3, 128);
      

      或者:

      for(size_t i=0; i<128; i++)
      {
          if(t2[i] != t3[i])
          {
              printf("Mismatch at index %zu\n", i);
              break;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2022-01-01
        • 2013-08-30
        • 1970-01-01
        • 2020-05-24
        • 2013-03-06
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        相关资源
        最近更新 更多