哈希游戏- 哈希游戏平台- 哈希游戏官方网站
根据以上的特定我们能总结出⼏个根据以上特点衍⽣出来可以供我们使⽤的特性:1.⽅便存储:MD5加密出来都是32位的字符串,能够给定固定⼤⼩的空间存储,传输,验证2.⽂件加密:MD5运⽤在⽂件加密上很有优势,应为只需要32为字符串就能对⼀个巨⼤的⽂件进⾏验证完整性3.不可逆:MD5加密出来只会截取末尾32位,具有良好的安全性,如果是对于参数加密很难伪造MD54.加密损耗低:MD5加密对于性能的消耗微乎其微(我获得的结果是:0.001毫秒)2.实际上需要如何应⽤呢我在实践中常常会⽤到的MD5校验加密⼀般运⽤场景:⽤户密码,请求参数,⽂件校验2.1.⽤户密码对于⽤户密码加密最⾼境界就是:别⼈获得你数据库的⽤户资料别⼈也没有办法获知密码.要达到就要有⼀套复杂的加密规则,⼀般常⽤的规则⽐如:MD5(MD5(⽤户名+⽤户密码)+MD5(KEY+项⽬名+公司名)) 这样可以避免和别⼈碰库不排除别⼈⽤MD5来攻击你的服务器来匹配.当然还可以⾃定很多种加密⽅法,就算知道加密⽅法也⼏乎⽆法去推送出⽤户原密码是什么2.2.请求参数校验都与服务器来⾔排除系统问题最⼤的问题就是害怕请求被拦截,拦截修改之后就有很多漏洞的可能性了为了避免被拦截,参数被修改这种⽂件的常⽤⽅法就是对请求参数进⾏校验,就算拦截了请求参数修改了只要模拟不出MD5加密出来的值,在服务器过滤器直接就会进⾏拦截.我这边推荐的请求校验⽅法在传递参数的时候带上 MD5值随机数时间戳当然这⼏个都是由客户端⽣成 MD5=MD5(随机数+时间戳+MD5(KEY+公司名+项⽬名)) 当然这个规则也是可以定制的请求参数在服务器就⽤客户端传递过来的随机数时间戳来做校验如果不通过就不让继续访问(在这⾥的随机数时间戳在后⾯的请求安全请求唯⼀性验证中会起到很⼤的作⽤所以建议保留)2.3⽂件校验当然对于⼀些图⽚已经⼀些很⼩很⼩的⽂件来说可以不⽤MD5校验应为基本上都是⼀次请求就完成了上传,⽽且显⽰的时候也不需要验证图⽚完不整.但是如果是遇到了⼤⽂件上传MD5 就起到作⽤了,当然不是吧⼀个⼏个G 的⽂件⼀次性上传使⽤MD5校验,这边100%会失败就算传递到服务端了这个时间是不能被接受的 ,⽽且服务器最好是对请求做好限制(以后会开⼀篇来单独探讨⽂件上传的问题)我们对于⼤⽂件上传的处理⽅式是进⾏分⽚上传,也就是所谓的断点续传,⾥⾯的实现机制如果有⼀个5MB的⽂件客户端把它分割成5份 1MB的⽂件在上传的时候上传两个MD5值⼀个是当前上传的⽚1MB⽂件流的MD5 还有⼀个就是拼接之后的MD5(如果现在上传的是第⼆⽚这个MD5就应该是第⼀⽚加上第⼆⽚的MD5)通过这样的⽅式能保证⽂件的完整性当如果⽂件传到⼀半断了,⽤户换了台机器传通过验证⽂件MD5 值就可以得知⽤户已经传到了第⼏⽚就可以告诉⽤户从第⼏⽚开始传递就解决了这个问题3.总结:在不知不觉中MD5校验早已经运⽤到我们⽣活中的点点滴滴,⽆时⽆刻不在使⽤者MD5.通过以上的例⼦说明了MD5在我们服务器开发安全中扮演着不可替代的⾓⾊,在⽇常的开发中使⽤MD5校验技术可以有效的避免莫些安全性的问题.。