我正在为2D条形码写一个大约120个字符的字符串。与其他文本一起,该字符串包含唯一的票号。我想通过阅读二维条码并生成自己的条形码门票来确保某人不会生成假票。
我想散列字符串并将哈希值附加到条形码中嵌入的内容中。这样我就可以在读数上比较两者,看看数据是否被篡改过。我已经看到几个返回64字节及以上的哈希函数,但是在二维条码中嵌入的字符越多,条形码图像就越大。我想要一个返回相当小的值的算法。如果我可以提供我自己的密钥功能也会很好。碰撞并不是什么大不了的事。这不是任何一种国家安全申请。
有什么建议吗?
答案 0 :(得分:0)
使用任何标准哈希函数。取120个字符的字符串;追加你自己的秘密价值;将它提供给SHA-1或MD5或任何你方便或想要实现的哈希函数;然后只需获取您想要的第一个多少位并将其用作您的值。 (如果您需要ASCII字符,那么我建议您使用6位组并使用base-64编码。)
如果您使用的哈希是好的(例如,MD5和SHA-1; MD5现在不应该用于严肃的加密算法,但听起来它已经足够满足您的需求)那么从它的位集合将是“足够好”,因为没有其他函数产生那么多位会更好。
(警告:对于严格的加密使用,您应该更加小心。请查看,例如http://en.wikipedia.org/wiki/HMAC以获取更多信息。从您的描述中,我认为您不必担心这些事情。)