关于MD5 32位和16位的区别以及linux /etc/shadow 文件详解
2017-12-21 14:08
543 查看
md5的长度,默认为128bit,也就是128个0和1的二进制串。
这样表达是很不友好的。
所以将二进制转成了16进制,每4个bit表示一个16进制,
所以128/4 = 32 换成16进制表示后,为32位了。
为什么网上还有md5是16位的呢?
网上有很多帖子,md5 32位 16位 加密 区别。仔细观察admin生成的32位和16位的md5值……
查询结果:
md5(admin,32) = 21232f297a57a5a743894a0e4a801fc3
md5(admin,16) = 7a57a5a743894a0e
看出来了吧!
其实16位的长度,是从32位md5值来的。是将32位md5去掉前八位,去掉后八位得到的。
下面就说说linux密码的问题!
linux的root密码存在于“/etc/shadow”这个文件中,不过要有root权限才能在linux下看到“/etc/shadow”这个文件。我用自己的虚拟机做一个演示,如下图所示:
上面这个图中,我没有设置root的密码,可以看到root那一行最开始有个“!”。接着看下面的图,已经设置了root密码:
在这里,主要是对shadow密码存储结构做一些介绍,参考了一下网络上的相关内容,自己总结一下。<
4000
/span>
密文字符串格式为:$id$salt$encrypted,通过$来分割,其中$id用来指定使用的算法,如下表格所示:
ID | Method |
1 | MD5 |
2a | Blowfish(not in mainline glibc;added in some Linux distribution) |
5 | SHA-256(since glibc 2.7) |
6 | SHA-512(since glibc 2.7) |
接下来,描述一下这个密码存储的结构。
账户名:账户名与/etc/passwd里面的账户名是一一对应的关系。
密码:这里可以看到3类,分别是奇奇怪怪的字符串、*和!!其中,奇奇怪怪的字符串就是加密过的密码文件。星号代表帐号被锁定,双叹号表示这个密码已经过期了。奇奇怪怪的字符串是以$6$开头的,表明是用SHA-512加密的,$1$
表明是用MD5加密的、$2$ 是用Blowfish加密的、$5$是用 SHA-256加密的。
修改日期:这个是表明上一次修改密码的日期与1970-1-1相距的天数密码不可改的天数:假如这个数字是8,则8天内不可改密码,如果是0,则随时可以改。
密码需要修改的期限:如果是99999则永远不用改。如果是其其他数字比如12345,那么必须在距离1970-1-1的12345天内修改密码,否则密码失效。
修改期限前N天发出警告:比如你在第五条规定今年6月20号规定密码必须被修改,系统会从距离6-20号的N天前向对应的用户发出警告。
密码过期的宽限:假设这个数字被设定为M,那么帐号过期的M天内修改密码是可以修改的,改了之后账户可以继续使用。
帐号失效日期:假设这个日期为X,与第三条一样,X表示的日期依然是1970-1-1相距的天数,过了X之后,帐号失效。
保留:被保留项,暂时还没有被用上。
相关文章推荐
- 关于scanf与scanf_s的区别,以及用scanf编译出错并且提示找不到可执行文件.exe的解决办法。
- MD5文件加密以及关于NIO中的FileChannel.map的一点看法
- 关于/dev/null 和 /dev/zero文件详解以及误删/dev/null和/dev/zero的解决方法和利用/dev/zero进行磁盘IO测试方法
- 关于scanf与scanf_s的区别,以及用scanf编译出错并且提示找不到可执行文件.exe的解决办法。
- 关于break和continue以及label的区别和作用(详解)
- 说说 MD5 加密后的类型(16位与 32位的区别)
- 关于Android中style文件的作用以及用法详解
- getClass()和getClassLoader()区别 以及ClassLoader详解及用途(文件加载,类加载)
- 关于Android中style文件的作用以及用法详解
- 关于重建控制文件的两种方式以及区别(resetlogs ,noresetlogs)
- ios 关于MD5 加密的32位与16位
- 关于Android中style文件的作用以及用法详解
- ios 关于MD5 加密的32位与16位
- 关于js中的onclick事件和JQuery中的click方法以及on方法事件的详解以及区别
- ios 关于MD5 加密的32位与16位
- ios 关于MD5 加密的32位与16位
- 关于get和set访问器以及属性和字段变量的区别问题
- ASP.NET CS文件中输出JavaScript脚本的3种方法以及区别
- 关于32位Vista不支持4G内存,以及一些误传的解决方案。
- Java中关于==和equal的区别 以及equals()方法重写