SHA-1摘要减少

时间:2012-08-03 22:58:35

标签: digest reduction sha1

我正在使用QR Code条形码在我的系统中存储UUID,我需要检查生成的条形码是我的,而不是别人的。我还需要保持编码数据的简短,以便QR码保持在较低的版本范围内,并且易于扫描。

我的方法是在转换为QR码之前获取UUID原始值编号(128位值)和16位校验和,然后Base64编码该数据。到目前为止一切顺利,这完美无缺。

为了生成校验和,我采用UUID的字符串版本,并将其与长秘密字符串组合,并将奇数字节异或,以产生SHA-1哈希。但是这个散列太长了,所以我将所有旧字节放在一起产生一半的校验和,同样用偶数字节产生另一半。

令我担心的是,我通过对它进行异或来不必要地破坏了SHA-1系统。从结果中的某个位置获取两个未操作的字节会更好吗?我接受16位校验和不如160位校验和那么安全,但这是我需要为条形码的可用性付出的代价。我真的不想发现的是,我现在提供了一个容易破解的校验和,因为UUID是以明文形式传输的。

如果有更好的方法来生成校验和,这也是问题的合适答案。一如既往地感谢您的时间或只是阅读本文,如果您发布答案,请加倍并非常感谢。

1 个答案:

答案 0 :(得分:0)

没有理由做任何XORing。简单地取前两个字节将为(in)secure。

为了使代码版本尽可能小,您可能希望将144位值转换为十进制字符串并对其进行编码。 QR码具有不同的字符集并有效地编码数字。 Base64只能在QR码中编码为8位值,因此您可以在此处添加30%。