咨询
交流群
电话

Jspxcms用户密码的加密方式:Sha1+Salt

文档 > 使用心得 2017-07-10 16:48 阅读

众所周知,用户登录密码直接使用明文保存是非常不安全的。如果数据库内容被窃取,密码就被泄露了。

所以密码都会以某种方式加密后,再保存到数据库,这样即使数据库内容被窃取了,依然无法知道用户的登录密码。常用的加密方式有MD5、Sha1。Jspxcms使用的是Sha1加密。

针对加密的密码,可以使用彩虹表破解。因此直接对密码进行加密,也不够安全。需要在原密码的基础上加上一些随机数,再进行加密,这个随机数就是所谓的Salt。由于salt是随机数,每个用户的salt都是不一样的,即使是同一用户,每次修改密码,salt都会改变。也就是说,即使两个用户的原密码一样,加密后的密码都是不一样的。

Jspxcms8.X代码及数据库相关说明。

对应的表:cms_user。对应字段:f_password(sha1加密后的密码),f_salt(用于混淆密码的随机数,防止彩虹表破解)。

加密的配置com.jspxcms.core.ShiroConfig

@Bean("credentialsDigest")
public SHA1CredentialsDigest credentialsDigest() {
    return new SHA1CredentialsDigest();
}

登录时shiro对应的代码com.jspxcms.core.security.ShiroDbRealm

@Autowired
public void setCredentialsDigest(CredentialsDigest credentialsDigest) {
    this.credentialsDigest = credentialsDigest;
}