当前位置: 首页 > news >正文

Linux /etc/shadow密码生成操作示例

一. 前言

        之前学习过Linux文件系统下/etc/shadow里面保存着各个用户名的密码,并且密码是通过MD5算法加盐的方式生成的。但是一直没有自己真正动手生成过,今天,就来自己动手写代码生成下。

二. 代码验证/etc/shadow中密码

1. 通过passwd命令生成密码,假设用户名为root,密码为123456
passwd root

        查看/etc/shadow文件,如下:

root:$1$gA9tnfhW$lGSMx0UjkTUxY7D84P3871:1:0:99999:7:::

        该密码由三部分组成,分别是idsaltencrypted,它们由$符号分隔,格式如下:

$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.h>char *crypt(const char *key, const char *salt);

        通过向crypt函数传入password和salt,就可以生成最终/etc/shadow文件中的密码的内容,代码示例如下:

#include <stdio.h>
#include <string.h>
#include <unistd.h>int 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系统密码的生成方式。

        通过一个简单的例子,还是要告诉自己,学习知识还是不能模棱两可,有疑问就要去积极的验证。

http://www.lryc.cn/news/249288.html

相关文章:

  • seata集成springboot的一些错误小计
  • springmvc(基础学习整合)
  • 采集软件大全-全网免费的采集软件大全
  • 世微AP5125 DC-DC降压恒流 LED车灯电源驱动IC SOT23-6
  • STC15-串口通信打印输出数据printf函数与sprintf函数
  • Android 11.0 默认开启USB调试功能
  • 单片机AVR单片机病房控制系统设计+源程序
  • C语言——多种方式打印出1000之内的所有的“水仙花数”
  • .net 8 发布了,试下微软最近强推的MAUI
  • 【产品经理】AI在SaaS产品中的应用及挑战
  • Python实现一箭穿心
  • 机器人AGV小车避障传感器测距
  • Boost:进程间共享内存
  • Android Camera Surface显示相关问题总结
  • php通过curl方式发送接受xml数据
  • 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建
  • Python语言创建爬虫代理IP池详细步骤和代码示例
  • Oracle研学-介绍及安装
  • 建设银行新余市分行积极开展国债下乡宣传活动
  • 【javascript】如何判断一个对象属性是否存在
  • Linux-hid
  • Paraformer 语音识别原理
  • 用户注册这样玩,保你平安
  • QXDM Filter使用指南
  • 智能优化算法应用:基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 3dsMax插件Datasmith Exporter安装使用方法
  • Rocketmq架构
  • 中兴亮相中国国际现代化铁路技术装备展览会 筑智铁路5G同行
  • 从零学算法15
  • 《Effective C++》条款27