1
unclewang81 2019-04-18 15:50:57 +08:00
如果格式为”$id$salt$hashed ”,则表示该用户密码正常。其中$id$的 id 表示密码的加密算法,$1$表示使用 MD5 算法,$2a$表示使用 Blowfish 算法,”$2y$”是另一算法长度的 Blowfish,”$5$”表示 SHA-256 算法,而”$6$”表示 SHA-512 算法,
目前基本上都使用 sha-512 算法的,但无论是 md5 还是 sha-256 都仍然支持。$salt$是加密时使用的 salt,hashed 才是真正的密码部分。 |
2
leavic OP @unclewang81 你说的这些部分我都知道,现在的关键是 hashed 部分,到底是什么格式编码的字符串?
|
3
leavic OP @unclewang81 举个最简单的例子,我们一般看到的 md5 hash 都是 hex string 格式的,但 shadow 文件里的明显是不 hex string
|
4
leavic OP 例如假定密码是 mypassword,盐是 mysalt,那么用 openssl 生成的 shadow 密码如下:
openssl passwd -1 -salt mysalt mypassword $1$mysalt$JyKGOJR1343sJ7N91hXVI/ 但用 hashlib 生成的 md5 hexdigest 如下: 399b1141e55e53a9df428ed4585ca3e9 这两个数据如何转换呢? |
5
ysc3839 2019-04-18 17:47:59 +08:00 via Android
你给的链接已经是较好的答案了,直接使用 crypt 即可。
不想用?那就自己实现吧。我帮你找到了 glibc 的实现。 https://code.woboq.org/userspace/glibc/crypt/crypt-entry.c.html#__crypt_r |
6
joesonw 2019-04-18 18:17:16 +08:00 2
|
7
mikeguan 2019-04-18 18:20:20 +08:00 via Android
|
9
xyjincan 2019-11-06 10:44:15 +08:00
哇!
|