16 人们常说,当使用MD5算法对某些任意信息进行签名时,共享密钥必须位于末尾。为什么? hash-function cr.crypto-security — 亨德里克·布鲁默曼 source 2 您能否更具体些,而不要说“经常说”。您可以引用参考文献,还可以扩展问题的相关性吗? — Suresh Venkat 2010年 您的问题标题中有错别字:您可以将“和”更改为“结束”吗? — 卡洛斯·谢德格
16 请参阅Merkle-Damgard构造中的“扩展攻击” 。在使用哈希函数进行消息身份验证时会出现此问题。 简而言之,将机密放在开头可以使攻击者(在获得了消息及其散列的情况下)伪造以给定消息为前缀的任何消息。对于朴素的代码,这是一个问题,但是像HMAC这样的众所周知的代码可以避免这种情况。 — 随机行者 source 1 据我了解,如果您中断输入流,并且共享密钥是流的开始,那么第一个块几乎总是会得到相同的哈希值,因此可以通过使用Rainbow攻击来猜测共享密钥,对吗? — 亚历山德鲁