是否可以在不使用盐的情况下配置 OpenLDAP Crypt 密码?
Is possible to configure OpenLDAP Crypt passwords without using a salt?
从文档中我得到了这个有效的配置,但使用了盐,
密码哈希{CRYPT}
密码加密盐格式“$6$%.16s”
并且我需要将密码存储在没有盐加密的情况下生成的 LDAP 目录中。
您可以简单地导入具有现有 userPassword 值的用户条目而不加盐。如果您的本地 OpenLDAP 安装支持哈希方案,密码验证将起作用。
配置指令 password-hash 和 password-crypt-salt-format 设置新密码时。
你最好使用另一种不加盐的密码存储方案,如 {SHA} 或 {MD5} 而不是 {CRYPT} :
password-hash {SHA}
如果需要使用{CRYPT}:
您仍然可以提供 static 盐(!糟糕,不安全,几乎就像没有盐一样!),只需遵守给定的格式:
password-crypt-salt-format "$%.16s"
$
是 SHA512
模式的 crypt 标识符,我们提供了一个 16 个字符的长盐:
~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret1
$verybadseasoning$Q2kceqwB2uYT2tU./QF.qRCIWjMQdObEAZ71Ni5Ko1zJOnxUwpu3oMeyjtgiR3hSVHIT20Ay9V1.pXaNhkHYk/
~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret2
$verybadseasoning$SHof1u2BCPJhYoVOk.LkWax7n5g28rzMkNCRAC5NmlT29GSeWLAlv2AoSkOS4rYfMUXsmTcyIxKDUU8aL7TlP0
请注意 mkpasswd
不允许使用空盐 :
~$ mkpasswd -m sha-512 --salt '' secret
Wrong salt length: 0 bytes when 8 <= n <= 16 expected.
或者您可以尝试使 crypt 忽略 given/generated salt 字符串(通过从中获取零字符):
password-crypt-salt-format "$%.0s"
它告诉 crypt() 使用 SHA512 算法,%s
被盐的零字符字符串 (%.0s
) 替换。我不知道 slapd 是否强制执行 %s 转换,但是只设置 "$"
而不用任何替代盐腌可能会成功,因为它 意味着 相同(不盐),即:
~$ php -r 'print(crypt("secret", "$"));'
$M9DchxW4txWyTYoZrH9D3VvAAQxBpEezYsLY6Cao.jwzEXpyL9xwip9hiUZX7GqTqe/E/z6iKvZqXUuqniQH.
请注意,缺少盐会使您的系统受到字典攻击。
从文档中我得到了这个有效的配置,但使用了盐,
密码哈希{CRYPT} 密码加密盐格式“$6$%.16s”
并且我需要将密码存储在没有盐加密的情况下生成的 LDAP 目录中。
您可以简单地导入具有现有 userPassword 值的用户条目而不加盐。如果您的本地 OpenLDAP 安装支持哈希方案,密码验证将起作用。
配置指令 password-hash 和 password-crypt-salt-format 设置新密码时。
你最好使用另一种不加盐的密码存储方案,如 {SHA} 或 {MD5} 而不是 {CRYPT} :
password-hash {SHA}
如果需要使用{CRYPT}:
您仍然可以提供 static 盐(!糟糕,不安全,几乎就像没有盐一样!),只需遵守给定的格式:
password-crypt-salt-format "$%.16s"
$
是SHA512
模式的 crypt 标识符,我们提供了一个 16 个字符的长盐:~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret1 $verybadseasoning$Q2kceqwB2uYT2tU./QF.qRCIWjMQdObEAZ71Ni5Ko1zJOnxUwpu3oMeyjtgiR3hSVHIT20Ay9V1.pXaNhkHYk/ ~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret2 $verybadseasoning$SHof1u2BCPJhYoVOk.LkWax7n5g28rzMkNCRAC5NmlT29GSeWLAlv2AoSkOS4rYfMUXsmTcyIxKDUU8aL7TlP0
请注意
mkpasswd
不允许使用空盐 :~$ mkpasswd -m sha-512 --salt '' secret Wrong salt length: 0 bytes when 8 <= n <= 16 expected.
或者您可以尝试使 crypt 忽略 given/generated salt 字符串(通过从中获取零字符):
password-crypt-salt-format "$%.0s"
它告诉 crypt() 使用 SHA512 算法,
%s
被盐的零字符字符串 (%.0s
) 替换。我不知道 slapd 是否强制执行 %s 转换,但是只设置"$"
而不用任何替代盐腌可能会成功,因为它 意味着 相同(不盐),即:~$ php -r 'print(crypt("secret", "$"));' $M9DchxW4txWyTYoZrH9D3VvAAQxBpEezYsLY6Cao.jwzEXpyL9xwip9hiUZX7GqTqe/E/z6iKvZqXUuqniQH.
请注意,缺少盐会使您的系统受到字典攻击。