UCenter密码算法规则和生成方法

安全 数据安全 算法
康盛的系列产品,包括Discuz、UCHome、Supesite都集成了统一个用户系统——UCenter,用户登录的密码也保留在UCenter中,对于其他系统集成或导出数据到UCenter系统......

康盛的系列产品,包括Discuz、UCHome、Supesite都集成了统一个用户系统——UCenter,用户登录的密码也保留在UCenter中,对于其他系统集成或导出数据到UCenter系统,通常会碰到密码生成的题目,这里就讨论一下UCenter的用户密码算法规则和生成方法。

密码通常使用MD5对用户密码HASH后保留在数据库中的方法,假如黑客拿到了这个HASH数值,那么可以采用字典的方式暴力破解,假如这个字典数据库足够大,并且字典比较符合人们的设置习惯的话,那很轻易就能破解常见的密码,因此UCenter采用了salt来防止这种暴力破解,salt是一随机字符串,它与口令连接在一起,再用单向函数对其运算,然后将salt值各单向函数运算的结果存入数据库中。假如可能的salt值的数量足够大的话,它实际上就消除了对常用口令采用的字典式攻击,由于黑客不可能在数据库中存储那么多salt和用户密码组合后的HASH值。

UCenter的创始人密码是保留在文件中的,打开uc下面/data/config.inc.php文件,里面的UC_FOUNDERPW保留的就是密码,而UC_FOUNDERSALT保留的是SALT数值,创始人密码的创建规则是:UC_FOUNDERPW=md5(md5(PASSWORD).UC_FOUNDERSALT),就是先将密码MD5,然后添加salt,然后再次MD5,产生的HASH数值保留在config.inc.php文件中,因此修改UC_FOUNDERPW里面的数值就可以修改UCenter的创始人密码。

UCenter的用户信息是保留在uc_members表中,在这个表中,每个用户都有一个不同的随机salt字段,表中的password字段为计算后的密码,密码计算规则是$password=md5(md5($password).$salt),也就是将用户的密码MD5后,添加salt,然后再MD5,保留在password字段中。

因此,假如进行不同系统的数据转换,可以根据这个原理,将其他系统的用户名和密码计算后,导入UCenter的uc_members表中,实现用户的迁移。例如,假如原有系统使用的是md5(password)这样的算法保留密码,那就通过程序随机生成salt,然后计算两者累加后的md5,这样就很轻易计算出这个用户在UCenter中的用户密码HASH值,从而实现用户的无缝迁移。

不外,假如原有系统使用的是md5(password+salt)的方式保留的密码,那就无法实现密码的平滑迁移UCenter了,即使迁移,也只能人为将其UCenter的password增加一个salt才能使用,因此,我们在平时设计系统用户密码的时候,应该尽量采用md5(md5(password)+salt)的方式保留密码,这样才能利便的实现和UCenter的接口,并且保证了安全性,通常对于英文用户名来说,自建系统使用username来做salt是个简便的方法。

【编辑推荐】

  1. 让用户留在你的站点里 UCenter Home新版改进重细节
  2. 全磁盘加密(FDE)软件性能大揭秘
  3. 密码学:从理论到实践
责任编辑:赵宁宁 来源: try2
相关推荐

2009-06-16 11:13:38

Javadoc生成方法Javadoc

2012-04-28 16:23:33

苹果App Store排名算法

2021-03-30 07:47:46

SVG 滤镜 CSS技巧

2009-06-22 14:57:09

2023-08-04 07:33:57

jsencryptRSA算法

2011-03-14 15:46:35

Iptables语法

2016-11-29 09:12:21

数据库分布式ID

2022-02-23 08:50:37

MySQL

2023-03-09 07:51:23

性能提升数据库

2024-04-01 13:08:24

唯一IDC#后端

2010-06-22 15:40:54

Autoconf使用

2009-06-25 17:24:06

Hibernate主键

2009-12-29 10:32:24

WPF Listbox

2010-01-13 17:55:37

VB.NET语法规则

2022-07-11 09:00:00

数据集成云计算ELT

2010-06-11 10:02:02

UML顺序图

2019-07-02 13:16:05

密码账号安全数据安全

2010-05-26 16:44:19

SVN版本号

2020-06-07 11:46:05

密码信息泄露高强度密码

2009-10-23 16:53:16

VB.NET语法规则
点赞
收藏

51CTO技术栈公众号