Linux下passwd文件详解之密码的加密

注:下面按照“1234“作为明文密码做演示

1、密码的生成规则
查看passwd文件发现由如下内容

cat passwd
root:$5$PHE/Zsb.x38Sr8pV$6jfLsgS2i0Fxy37Rz8yivu3Xu1MTHALRutc.Dx/Bt28:0:0::/root:/bin/sh
root:用户名
$5$PHE/Zsb.x38Sr8pV$6jfLsgS2i0Fxy37Rz8yivu3Xu1MTHALRutc.Dx/Bt28:密码字段

看到这里,你可能会有疑问,密码字段是由什么算法生成的?

这里的密码字段是以crypt(3)的格式存储的,
$5$是加密算法,这表示使用的是SHA-256算法。
PHE/Zsb.x38Sr8pV是crypt的盐值,明文密码按照1234计算,我们可以得出加密后的结果
$5$PHE/Zsb.x38Sr8pV$6jfLsgS2i0Fxy37Rz8yivu3Xu1MTHALRutc.Dx/Bt28

2、下面给出crypt的计算样例,感兴趣的小伙伴可以验证一下

$ cat crypt.cpp 
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <crypt.h>

int main() {
	std::string password = "1234";
	std::string salt = "$5$PHE/Zsb.x38Sr8pV";

	char* encryptedPassword = crypt(password.c_str(), salt.c_str());

	std::cout << "Encrypted Password: " << encryptedPassword << std::endl;
	return 0;
}
$ g++ crypt.cpp -lcrypt
$ ./a.out 
Encrypted Password: $5$PHE/Zsb.x38Sr8pV$6jfLsgS2i0Fxy37Rz8yivu3Xu1MTHALRutc.Dx/Bt28

如果你对上面的内容感兴趣,我建议你看一下我的另外一篇文章
Linux下passwd与shadow的关系

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,`/etc/passwd` 和 `/etc/shadow` 是两个重要的文件,用于存储用户账户信息和密码哈希值。我会分别对它们进行详细解释。 1. `/etc/passwd` 文件: `/etc/passwd` 是一个文本文件,包含了系统中所有用户账户的基本信息。每一行对应一个用户账户,字段之间使用冒号(:)进行分隔,例如: ``` username:password:UID:GID:gecos:home_dir:shell ``` - `username`:用户账户的登录名。 - `password`:用户账户的密码哈希值(现在已经被移至 `/etc/shadow` 文件中)。 - `UID`:用户账户的唯一标识符。 - `GID`:用户账户所属的主要组标识符。 - `gecos`:用户账户的一些额外信息,如全名、电话等(可以为空)。 - `home_dir`:用户账户的主目录。 - `shell`:用户账户的默认Shell程序。 注意:现在 `/etc/passwd` 中的 `password` 字段已经被 'x' 或者 '*' 取代,实际的密码哈希值被移至 `/etc/shadow` 文件中。 2. `/etc/shadow` 文件: `/etc/shadow` 是一个只有 root 用户可读的文件,用于存储用户账户的密码哈希值和一些其他安全相关的信息。每一个用户账户的信息占用一行,由冒号(:)分隔,如下所示: ``` username:password:lastchg:min:max:warn:inactive:expire:disable ``` - `username`:用户账户的登录名。 - `password`:用户账户的密码哈希值。 - `lastchg`:上次修改密码的日期(从1970年1月1日开始算起的天数)。 - `min`:两次修改密码之间所需的最小天数。 - `max`:密码有效期的最大天数。 - `warn`:提前多少天给用户发出密码过期警告。 - `inactive`:密码过期后多少天用户账户被禁用。 - `expire`:用户账户被禁用的日期(从1970年1月1日开始算起的天数)。 - `disable`:用户账户是否被禁用。 `/etc/shadow` 文件中的密码哈希值通常是经过加密且不可逆的,用于验证用户输入的密码是否正确。 总结:`/etc/passwd` 文件存储了用户账户的基本信息,而 `/etc/shadow` 文件存储了用户账户的密码哈希值和其他安全相关的信息。这样通过将密码哈希值存储在 `/etc/shadow` 中,能够增加系统的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值