看到大家评论较多,就把方案加强了下
旧的系统密码存储的是md5(password),理论上md5在有限的时间空间内是不可逆的(实际上已经有人可以了)
一般使用md5(password),加加密后的密码进行保存
但这会有一个比较严重的问题,比如密码是123456的用户,存储的密码值都是e10adc3949ba59abbe56e057f20f883e
这样就会导致,如果被暴库后,可以拿已知的字典表来直接匹配了(所有e10adc3949ba59abbe56e057f20f883e的用户密码都是123456,这不是废话么)
一般的处理方式是加盐(salt),也就是md5(相对不变的内容+密码),这样即使密码一样,存储的内容也不一样,“相对不变的内容”一般会是用户名
这样的话,存储的是md5(userName+password)
这样就会好很多了,但是如果你的系统以前使用的md5(password),那么,你本身并没有存储password,要升级到这个方案,基本是不可行的。
md5(userName+md5(password)),这样的方案就优雅些了,也加了盐,也可以从原有的系统进行平滑升级
更好的方案:md5(userName+md5(password)+固定的二十位以上的字符串)
这样的话,密码的安全不再依赖于密码本身的简单或者复杂了,更多的是依赖于这二十位的字符串了,只要固定的字符串足够强壮,以至于目前的密码库都不存在此内容,那么及时用户使用了弱口令,也不影响安全。
贴一点代码吧,附件有完整的代码和jar包
- package info.frady;
- import org.apache.commons.codec.digest.DigestUtils;
- public class CommonTest {
- public static void main(String[] args) {
- String userName="frady";
- String password="123456";
- System.out.println(DigestUtils.shaHex(password));//sha(password),很少这么干
- System.out.println(DigestUtils.md5Hex(password));//md5(password),通用的做法
- System.out.println(DigestUtils.md5Hex(userName+password));//md5(userName+password),加强的做法,加了用户名做salt
- System.out.println(DigestUtils.md5Hex(userName+DigestUtils.md5Hex(password)));//md5(userName+md5(password)),兼容旧md5(password)升级的安全做法,用用户名做salt
- }
- }
补充下:
1.此方案适合密码存储的是md5(password)旧系统的改造,一般这样的系统,没有机会再生成md5(password+salt)了,因为旧的系统中根本没有password!(如果你的系统中还有password,那你的代码我就不好评价了)
2.基于function的隐藏一般来讲意义不大,你所知道的function大家都能知道。我们需要的是告诉他function,但是他确逆不回来的,或者逆向难度非常大。md5就具备这样的特征,function大家都知道,但是逆向的成本非常大。
3.不通过逆向,用字典表直接查找匹配是md5目前最大的安全问题,但此方案使用的是md5(userName+md5(password)),如果userName至少是4位的话(注册的时候一般都有这个要求),那么userName+md5(password)至少得是36位了,即使我的userName是abcd,密码是abc123,好吧假设你是个有心的黑客,而且你有个强大的多的字典,以至于你的字典表里竟然有md5(abcde99a18c428cb38d5f260853678922e03),然后我确实得承认你胜利了。
这意味着即使username是四位,你的密码库得比你本来的库庞大(26个字母+10个数字)*(36)*36*36=1679616倍。167万倍的密码库,哥们,再说磁盘非常廉价,你也有点搞笑了。
转自:http://mushme.iteye.com/blog/1883682#bc2314824
相关推荐
本改造方案旨在优化现有楼宇对讲系统的功能,提升安全性及用户体验。下面将详细阐述改造方案中的关键知识点。 一、系统架构升级 传统楼宇对讲系统多采用模拟信号传输,易受干扰且安全性较低。改造时可考虑升级为...
楼宇对讲系统改造方案 丽都花园C区的楼宇对讲系统改造方案旨在解决现有系统因老化、设备停产、无法维修及物业管理问题导致的系统瘫痪,以恢复小区的安全环境和提升业主的生活品质。改造后的系统将升级为一个完善的...
*采用非对称密钥算法和对称密钥算法的混合密码系统,以确保主站和终端通信的安全性。 *对称密钥算法主要用于通信数据的加解密。 *非对称密钥算法主要用于身份鉴别、密钥协商、对称密钥的更新。 *密钥管理包括:密钥...
【惠普助力智能公话系统改造案例】 "ST智能公用电话系统"是一个创新的电信解决方案,它结合了专用话机和智能公话平台的优势,提供综合的电信公话服务。该系统支持用户通过IC卡拨打电话,进行市话、本地网、国内国际...
【小区信息化系统改造方案研讨】 小区信息化系统的改造是现代社区管理的重要组成部分,旨在提升小区的安全性、便利性和智能化水平。本方案将详细探讨南瓯景园小区的信息化系统改造,包括智能停车场管理系统、可视...
系统简介:主要功能介绍:(1)订单管理模块;(2)供应商模块;(3)用户管理模块等。 项目技术:主要运用Spring+Spring MVC+... 密码模块:主要包含对当前登入用户密码进行修改操作; 本资源仅供学习使用。欢迎下载。
【远程信息化培训系统升级改造主要功能总结】 随着信息技术的快速发展,远程信息化培训系统已经成为现代企业进行员工教育和技能培训的重要工具。然而,现有的在线学习网站存在一些不足,如平台稳定性差、功能简单、...
这个过程涉及到安全验证,由单点登录管理应用服务器通过Web Service接口与各个应用系统服务器通信,验证用户提供的账号和密码,确保绑定的合法性。 其次,用户单点登录的流程设计是关键。当用户尝试访问应用系统时...
本系统——"JSP留言管理系统Ⅵ"就是结合这两种模式实现的一个实例,旨在提供一个用户友好、数据处理高效且易于维护的在线留言平台。 **1. MVC设计模式** MVC模式是一种将业务逻辑、视图展示和数据访问分离的设计...
### 老旧小区智能化升级改造项目解决方案 ...总之,通过对老旧小区进行全方位的智能化升级改造,不仅可以显著提升居民居住体验,还能有效促进小区管理现代化进程,为打造宜居、安全、舒适的社区环境打下坚实基础。
易语言棚户区改造管理系统源码,棚户区改造管理系统,记录保存密码信息,取出保存密码信息,读加密配置项,写加密配置项,取加密配置节名,取加密配置项名,删除加密配置小节,配置文件_写用户信息,配置文件_删除用户,配置...
在企业环境中,通常需要将Openfire与现有的用户管理系统进行整合,以便利用已有的用户数据,如LDAP(轻量级目录访问协议)或数据库中的用户信息。本文将详细介绍如何将Openfire与现有的用户资源进行整合,并扩展其...
总的来说,远程信息化培训系统的升级改造旨在解决现有在线学习平台的问题,提升培训效率,优化用户体验,同时满足企业多元化、个性化的培训需求。通过强化核心功能、完善管理模块、优化学习模式和提高系统性能,将有...
【标题】"纯servlet用户管理系统"涉及到的核心技术是Servlet,这是一种Java服务器端编程技术,用于处理和响应HTTP...开发者通过学习和实践,实现了对韩顺平教程的个性化改造,展现了对Web开发基础的理解和应用能力。
1. **用户登录**:用户需要通过用户名和密码进行身份验证,只有验证成功的用户才能访问系统,确保系统安全。 2. **学生信息管理**:包括添加、查询、修改和删除学生个人信息的功能。这要求系统具有完善的数据库支持...
2.4 计算机监控管理系统是人机交互的核心,用户通过输入用户名和密码访问实时动态监测界面,可以监控功率、调幅度等关键参数,设置报警阈值,执行远程控制如开关机、倒换备用机等操作。 此外,系统还包括总体观察、...