You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言生成LDAP服务LDIF文件所需SHA加密密码的问题排查

错误原因

你当前代码的问题在于digest函数默认返回SHA1哈希的十六进制文本形式,而OpenLDAP的{SHA}格式要求后缀拼接的是SHA1原始二进制字节的Base64编码,你将十六进制文本直接拼接前缀后再编码,自然和预期结果不一致。

正确实现代码
library(base64enc)
library(digest)

# 1. 计算明文password的SHA1原始二进制哈希,不要转十六进制
sha1_raw <- digest("password", algo = "sha1", serialize = FALSE, raw = TRUE)
# 2. 对原始哈希做base64编码,拼接{SHA}前缀
ldap_pwd_plain <- paste0("{SHA}", base64encode(sha1_raw))
# 3. 对拼接完成的字符串做base64编码,得到LDIF文件中的userPassword字段值
ldif_pwd <- base64encode(charToRaw(ldap_pwd_plain))

# 输出验证
ldap_pwd_plain
# 预期输出: "{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g="
ldif_pwd
# 预期输出: "e1NIQX1XNnBoNU1tNVB6OEdnaVVMYlBnekczN21qOWc9="
结果验证

生成的ldif_pwd和你给出的LDIF密码字段值完全匹配,符合OpenLDAP的密码编码规则。

内容的提问来源于stack exchange,提问作者Seb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:07