Linux帐户的密码加密后存放于/etc/shadow文件中。对于Redhat Enterprise版本,默认使用MD5算法,这个算法已经很不安全。很多经典的黑客教程都是教人拿到shadow文件后回去破解出root的密码,如果能用更难破解的sha算法加密密码无疑可以提高服务器的安全性。以下内容是综合了http://www.cyberciti.biz/faq/rhel-centos-fedora-linux-upgrading-password-hashing/ , http://kbase.redhat.com/faq/docs/DOC-15806 的内容而来,针对RHEL5.2以上版本。

显示当前密码加密算法:

# authconfig --test | grep hashing

输出:password hashing algorithm is md5

设置使用sha512算法:

# authconfig --passalgo=SHA512 --update

在我的RHEL5.3版中,提示unknown algorithm sha512, 使用了sha256,还没搞清楚是为什么。再次显示,已经更改为sha256算法。

最后,所有用户都需要重新设置密码才能生效。可以使用 # chage -d 0 userName 强制所有用户下次登录修改密码。

在我用的archlinux上,设置方法不同。参考了WiKi上的内容:http://wiki.archlinux.org/index.php/SHA_Passwords

1.修改 /etc/pam.d/passwd文件

#%PAM-1.0

#password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3

#password required pam_unix.so md5 shadow use_authtok

password required pam_unix.so md5 shadow nullok

把最后一行的md5用sha256替换

2.修改/etc/default/passwd文件

CRYPT=des 改为 CRYPT=sha256

3.所有用户重新修改密码。

/etc/shadow文件详解

登录名”是与/etc/passwd文件中的登录名相一致的用户账号
“口令”字段存放的是加密后的用户口令字:

如果为空,则对应用户没有口令,登录时不需要口令;
星号代表帐号被锁定;
双叹号表示这个密码已经过期了;
5 是用 SHA-256加密;
“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。

“最小时间间隔”指的是两次修改口令之间所需的最小天数。
“最大时间间隔”指的是口令保持有效的最大天数。
“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

作者:fly小灰灰
来源:CSDN
原文:
https://blog.csdn.net/yaofeino1/article/details/54616440
版权声明:本文为博主原创文章,转载请附上博文链接!


本文章转载自 : 传送门,盗码可耻,我们是代码的搬运工,只搬运,不盗码package cc.restyle.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;/** * SHA-512 加密 public class SHA512 { /** 传入文本内
散列法提供了一种单向加密的方式。这种方式非常适用于在数据库中存储密码。因为我们无须(也不希望)提供解密的信息。在登录验证时,只需简单地将用户的输入进行散列,并和数据库中存储的散列值进行比较即可。 由于散列码的长度不会随着源数据的长度而变化,因此可用于文件比较和数据流错误检查(和校验码非常类似)。源数据中任意一个位的变化都能够使散列码发生巨大的变化。 HashAlgorithm子类(例如SHA256或者MD5)的ComputeHash方法可以用于生成散列码:...
关于密码加密方式----sha512linux系统自动部署时 ks.cfg配置文件中rootpw密码可以使用明文,也可以使用加密过的值。 比如的我密码是:123456,对应加密后的密码是:111passwd$IGXXeEDreLiwIBs8UcxqD0 但是这个密码怎么生成呢,其实和生成linux系统的密码shadow一样,命令如下 perl -e 'print crypt("123456",q($1$password)),"\n"' PS:当使用特殊字符时,例如@$符时需要在前面加上\,例:@$,否
单向散列函数是一类满足密码算法安全属性的特殊散列函数,可以根据消息的内容计算出散列值,又称为安全散列函数或者哈希函数,通常用于检验消息完整性。 输入数据称为消息,计算出的散列值称为消息摘要(摘要)。 单向散列函数具有如下特点: 输入长度任意; 输出长度固定; 单向性:无法根据散列值还原出消息; 单向散列函数主要用在: 消息完整性检测; 构造伪随机数生成算法; 消息认证码; 数字签名; 一次性口令; 2. 单向散列算法 单向散列算法是单向...
这里写目录标题一、SHA简介二、SHA家族特点三、SHA工具类四、实践结语 一、SHA简介   安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。   目前SHA有五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国安全局(NSA)所设计,并由美国国家标准