开始学习 Linux 安全性并阅读一些有关 MD5 密码哈希的文章。
这个Godbolt Demo使用了crypt功能
char *crypt(const char *key, const char *salt);
并传递这个
salt
值
const char *salt = "$1$rockyou";
哪里
$1$
是MD5rockyou
是盐。问题
假设盐中包含
$
符号,例如rock$you
,那么在传递给crypt之前应该如何格式化它?
盐中不能使用
$
。从您链接到的文档中:
如果salt是以“$id$”开头的字符串 后跟一个可选地以“$”结尾的字符串,然后 结果的形式为:
$id$salt$encrypted
... “salt”和“encrypted”中的字符是从集合
中提取的。[a-zA-Z0-9./]
$
不在该集合中,因为它用作 salt
和 encrypted
之间的分隔符。