Linux 用户密码的加密方式
2014-12-11 17:46
239 查看
Linux /etc/shadow文件中的记录行与/etc/passwd中的一一对应,存放着用户的密码哈希值。它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“
Linux /etc/shadow文件中的记录行与/etc/passwd中的一一对应,存放着用户的密码哈希值。它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是: 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志 1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号 2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow 3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。 4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow 5)“最大时间间隔”指的是口令保持有效的最大天数。 6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。 7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。 8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow 下面是/etc/shadow的一个例子: [root@50_host ~]# cat /etc/shadow | grep root root:$6$ICPKdEabvcPXHUUt$dnQiverdy/ /CaqP715mMkfpPD0eDUaEP3UvJvxzb7Bb8pZscdOTEnuMu7wC6Qvg5 wdv5fr20GCK7C.A7TooJ70:15986:0:99999:7::: 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow [root@51_host ~]# cat /etc/shadow | grep root root:$1$g4KcQcnM$0KK9hg6VTPZ9Qfm1gHdTu/:15986:0:99999:7::: 其中shadow中存放的密码密文格式如下: $id$salt$encrypted 其中id是指使用的哈希算法: 可取如下值: ID | Method -------------------------- 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7) salt:是使用上面hash算法对密码进行hash的一个干扰值。 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow encrypted: 这个值即 密码的hash, 但不是直接的hash("passwd"),而是hash("passwd+salt")后,再经过编码。 实际应用: 1. 在有shadow文件的前提下暴力破解(也只能暴力破解)用户密码 2. 实现自己的passwd命令。某种场景下是很有用的(在云计算中,可以方便的为使用同一模板的linux虚拟机生成不同密码) 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow 示例: 该程序使用linux 系统中的crypt函数生成可替换shadow中密码域中的密码hash。 #include <stdio.h> #include <unistd.h> //crypt 使用方式参见man crypt //exemple: //./bin password $6$ffffffff 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow int main(int argc, char *argv[]) { if(argc!=3) return -1; char *buf = crypt((const char *)argv[1], (const char *)argv[2]); printf("salt: %s, crypt: %sn", argv[2], buf); return 0; } 编译方法:gcc a.c -lcrypt -o passwd 海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow 使用: ./passwd 654321 $1$g4KcQcnM 会输出: salt: $1$g4KcQcnM, crypt: $1$g4KcQcnM$0KK9hg6VTPZ9Qfm1gHdTu/ 使用 $1$g4KcQcnM$0KK9hg6VTPZ9Qfm1gHdTu/ 替换 shadow 文件中你要修改的用户中的密码域,密码便自动修改成了654321。 crypt密码加密函数简介: 原型: char * crypt (const char *key,const char * salt); 头文件: #include <unistd.h> crypt是个密码加密函数,它是基于Data Encryption Standard(DES)演算法。crypt只适用于密码的使用,不适合用于资料加密。 crypt()将参数key所指的字符串加以加密,key字符串长度仅取前8个字符,超过此长度的字符没有意义。参数salt为两个字符组成的字符串,由a-z、A-Z、0-9,“.”和“/”所组成,用来决定使用4096 (a-z、A-Z、0-9,“.”和“/”共64个字符,64的平方为4096)种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key 所指的字符串不会有所更动。编码过的字符串长度为13 个字符,前两个字符为参数salt代表的字符串。 返回值: 返回一个指向以NULL结尾的密码字符串。 |
相关文章推荐
- linux下禁止用户使用密码方式登陆,而使用密钥方式登陆
- linux的PAM认证和shadow文件中密码的加密方式
- 常见的用户密码加密方式以及破解方法
- (转)常见的用户密码加密方式以及破解方法
- linux的PAM认证和shadow文件中密码的加密方式
- linux下禁止用户使用密码方式登陆,而只使用密钥方式登陆
- 常见的用户密码加密方式以及破解方法
- php连接mysql 的错误:用户密码使用了旧版本的加密方式
- 分享一种用户密码加密方式解析
- 用户密码的加密方式
- 将现有系统用户密码转为.text加密方式的密码
- linux的PAM认证和shadow文件中密码的加密方式
- linux的PAM认证和shadow文件中密码的加密方式
- 常见的用户密码加密方式
- ucenter 用户密码加密方式
- shell增加linux系统用户,更改加密密码
- linux密码加密方式与暴力破解代码
- linux 下密码加密程序(可以用于替换shadow文件中的用户密码)
- 常见的用户密码加密方式以及破解方法
- 常见的用户密码加密方式以及破解方法