散列算法的基础原理 确保资料传递无误
w
https://zh.wikipedia.org/wiki/MD5
1992年8月,罗纳德·李维斯特向IETF提交了一份重要文件,描述了这种算法的原理,由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。
MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。
目前,MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的错误检查领域。例如在一些BitTorrent下载中,软件将通过计算MD5检验下载到的文件片段的完整性。
MD5已经广泛使用在为文件传输提供一定的可靠性方面。例如,服务器预先提供一个MD5校验和,用户下载完文件以后,用MD5算法计算下载文件的MD5校验和,然后通过检查这两个校验和是否一致,就能判断下载的文件是否出错。
MD5亦有应用于部分网上赌场以保证赌博的公平性,原理是系统先在玩家下注前已生成该局的结果,将该结果的字符串配合一组随机字符串利用MD5 加密,将该加密字符串于玩家下注前便显示给玩家,再在结果开出后将未加密的字符串显示给玩家,玩家便可利用MD5工具加密验证该字符串是否吻合。
例子: 在玩家下注骰宝前,赌场便先决定该局结果,假设生成的随机结果为4、5、 6大,赌场便会先利用MD5 加密“4, 5, 6”此字符串并于玩家下注前告诉玩家;由于赌场是无法预计玩家会下什么注,所以便能确保赌场不能作弊;当玩家下注完毕后,赌场便告诉玩家该原始字符串,即“4, 5, 6”,玩家便可利用MD5工具加密该字符串是否与下注前的加密字符串吻合。
该字符串一般会加上一组随机字符串 (Random string),以防止玩家利用碰撞 (Collision) 解密字符串,但如使用超级电脑利用碰撞亦有可能从加上随机字符串的加密字符串中获取游戏结果。随机字符串的长度与碰撞的次数成正比关系,一般网上赌场使用的随机字符串是长于20字,有些网上赌场的随机字符串更长达500字,以增加解密难度。