我有一个小问题,需要将大约10位数的哈希值分成6位数.哈希需要是确定性的.
散列不是资源密集型更重要.
例如,假设我有一些数字,x,如123456789
我想写一个哈希函数给我一个数字,y,像987654一样.
然后我想要一个将x和y作为参数的函数,在x上重新应用散列,并检查结果是否为y.
给定哈希值可能很难计算可能的输入值.
我的乘法数字乘法的第一个想法导致了许多重复的散列值.
我觉得这种问题有一些优雅的解决方案,但我自己也想不起来.
有人可以帮我从这里出去吗?提前致谢 :)
您所述的问题无法解决.
你说你希望系统"有点难以打破",我认为你的意思是攻击者采取一个已知的摘要并从中产生一个可能的输入,这对于给定的摘要具有哈希值是"有点难" .由于您建议的系统中只有40亿个可能的输入且只有65536个可能的哈希值,因此无论哈希算法是什么,找到与给定哈希对应的消息都是极其微不足道的.平均而言,攻击者将有大约65000条可能的消息可供选择,因此可以选择最能满足其恶意计划的消息.
我希望在破坏空间中需要一个"有点难"的问题,比如说要花几百万美元的超级计算机时间来打破.你的建议可以由没有经验的高中学生编写Javascript程序打破,这些程序需要花费几分钟时间才能完成,也可能需要一分钟才能完成.这甚至都不是模糊地接近"有点难".
为什么你在你的算法上选择这么小的限制,限制哪些本质上会使打破哈希变得微不足道?就此而言,像32位整数一样散列如此少量数据的价值是什么?
归档时间: |
|
查看次数: |
832 次 |
最近记录: |