传递给 crypt() 的盐值可以包含 $ 符号吗?

问题描述 投票:0回答:1

开始学习 Linux 安全性并阅读一些有关 MD5 密码哈希的文章。

这个Godbolt Demo使用了crypt功能

char *crypt(const char *key, const char *salt);

并传递这个

salt

const char *salt = "$1$rockyou"; 

哪里

  • $1$
    是MD5
  • rockyou
    是盐。

问题

假设盐中包含

$
符号,例如
rock$you
,那么在传递给crypt之前应该如何格式化它?

linux security md5 crypt
1个回答
1
投票

盐中不能使用

$
。从您链接到的文档中:

如果salt是以“$id$”开头的字符串 后跟一个可选地以“$”结尾的字符串,然后 结果的形式为:

         $id$salt$encrypted

... “salt”和“encrypted”中的字符是从集合

[a-zA-Z0-9./]
中提取的。

$
不在该集合中,因为它用作
salt
encrypted
之间的分隔符。

© www.soinside.com 2019 - 2024. All rights reserved.