首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >erlang SSHA ldap

erlang SSHA ldap
EN

Stack Overflow用户
提问于 2012-11-10 06:01:05
回答 3查看 684关注 0票数 3

给定存储在SHA-1/{SSHA}中的LDAP密码,我如何在erlang中验证它。

例如-给定以下{SSHA}:

代码语言:javascript
复制
% slappasswd -s myPassword
{SSHA}GEH5kMEQZHYHS95dgr6KmFdg0a4BicBP
%

如何(在erlang中)验证明文'myPassword‘是否与散列值'{SSHA}GEH5kMEQZHYHS95dgr6KmFdg0a4BicBP’匹配。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-10 22:35:47

在其他人的帮助下,我想出了一个在Erlang中完成此操作的例程。在这里跟大家分享。

首先-这个链接(在另一篇文章中)给出了其他语言的函数做我想要的:

  • http://www.openldap.org/faq/data/cache/347.html

诀窍是'ldap {SSHA}‘编码是一个salted-SHA1散列,也是base64编码的。所以-你必须解码它,提取盐,然后在“明文密码”的重新编码中使用它进行比较。

下面是一个简短的Erlang例程,它可以做到这一点:

代码语言:javascript
复制
validatessha(ClearPassword, SshaHash) ->
    D64 = base64:decode(lists:nthtail(6, SshaHash)),
    {HashedData, Salt} = lists:split(20, binary_to_list(D64)),
    NewHash = crypto:sha(list_to_binary(ClearPassword ++ Salt)),
    string:equal(binary_to_list(NewHash), HashedData).

给定我原始帖子中的数据-以下是输出:

代码语言:javascript
复制
67> run:validatessha("myPassword", "{SSHA}GEH5kMEQZHYHS95dgr6KmFdg0a4BicBP").
true
68> 

谢谢所有人。

麦克

票数 1
EN

Stack Overflow用户

发布于 2012-11-10 18:45:42

使用BIND操作验证存储在目录服务器中的密码。正确配置和安全的目录服务器将不允许访问密码数据;因此,在编码LDAP客户端时,不能期望密码数据可用,无论是加密的还是散列的。LDAP客户端必须使用绑定操作来验证密码。

票数 1
EN

Stack Overflow用户

发布于 2012-11-10 07:17:30

我的erlang非常生锈,所以这不是很漂亮,但也许它会让我的想法变得更好。

代码语言:javascript
复制
run() ->
  Password = "myPassword",
  HashRaw = os:cmd("slappasswd -s " ++ Password),
  Hash1 = lists:nthtail(6, HashRaw),
  Hash2 = lists:concat ([integer_to_list(X, 16) || X <- binary_to_list(crypto:sha(Password))]),
  string:equal(string:to_lower(Hash1), 
               string:to_lower(Hash2)).

我的想法是你:

  • 运行您想要验证其输出的命令(slappasswd),保存输出并修剪掉散列之前的额外修饰。
  • 从erlang库运行crypto:sha()。从这里获取二进制输出,并将其转换为整数列表,然后将每个整数转换为十六进制字符串,然后将其连接起来,从而创建Hash2。
  • 将命令的输出与crypto:sha()

的输出进行比较

编辑:我没有你正在使用的这个命令,所以我不能非常彻底地尝试。但它适用于sha1sum。我希望他们是一样的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13316670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档