新建网站做优化,网页编成网站,沧州网站网站建设,想自己做网站需要会什么软件一. 前言 之前学习过Linux文件系统下/etc/shadow里面保存着各个用户名的密码#xff0c;并且密码是通过MD5算法加盐的方式生成的。但是一直没有自己真正动手生成过#xff0c;今天#xff0c;就来自己动手写代码生成下。 二. 代码验证/etc/shadow中密码
1. 通过passwd命令生…一. 前言 之前学习过Linux文件系统下/etc/shadow里面保存着各个用户名的密码并且密码是通过MD5算法加盐的方式生成的。但是一直没有自己真正动手生成过今天就来自己动手写代码生成下。 二. 代码验证/etc/shadow中密码
1. 通过passwd命令生成密码假设用户名为root密码为123456
passwd root 查看/etc/shadow文件如下
root:$1$gA9tnfhW$lGSMx0UjkTUxY7D84P3871:1:0:99999:7::: 该密码由三部分组成分别是idsalt和encrypted它们由$符号分隔格式如下
$id$salt$encrypted id的值表示密码的加密方式加密方式如下
ID | Method
─────────────────────────────────────────────────────────
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) 所以如上密码的id为1表示由MD5方式生成。
2. 通过crypt函数生成/etc/shadow密码 man crypt命令查看crypt函数用法如下
#define _XOPEN_SOURCE /* See feature_test_macros(7) */
#include unistd.hchar *crypt(const char *key, const char *salt);通过向crypt函数传入password和salt就可以生成最终/etc/shadow文件中的密码的内容代码示例如下
#include stdio.h
#include string.h
#include unistd.hint main(int argc, char *argv[])
{char *salt $1$gA9tnfhW;char *passwd 123456;printf(%s\n, crypt(passwd, salt));return 0;
}输出
$1$gA9tnfhW$lGSMx0UjkTUxY7D84P3871 输出和/etc/shadow文件中root的密码内容一致。 三. 总结 本文介绍了/etc/shadow文件中root的密码的生成方式首先通过passwd命令生成root的密码从/etc/shadow文件中取出salt值然后通过调用crypt函数生成密码生成的密码与/etc/shadow中的一致了解了Linux系统密码的生成方式。 通过一个简单的例子还是要告诉自己学习知识还是不能模棱两可有疑问就要去积极的验证。