我需要一个散列函数(也许我不应该称其为“散列”函数):
1.仅用于哈希时间戳;
2.有一个反向功能,我可以通过该功能恢复时间戳;
3.不产生重复的哈希值;
4.不管是不是散列函数,都几乎和散列函数一样快;
PS:关于时间戳的数据类型——C语言中4字节“long”类型的图像。
那可能吗?
(我需要将时间戳保密。---事实上,我需要将哈希值作为会话 ID,并将原始时间戳作为数据库中的索引。每当用户使用会话 ID 请求某些内容时,我都可以获得时间戳作为获取请求信息的索引。)
如果您可以跳过 #2 MurmurHash 可能是一个不错的选择:
https://sites.google.com/site/murmurhash/
(2) 如果您必须加密/解密,则大多数语言(例如 AES)都有各种算法的标准实现。这将比散列慢得多。
如果您实际上并不需要它来保护数据(这引出了一个问题:为什么要为任何转换而烦恼?)并且只想制作一些易于反转的非时间戳字符串(由您 - 以及任何人否则)然后检查这个问题: