在OS X上生成MD5密码

时间:2010-08-08 07:39:04

标签: c macos cryptography md5

我正在使用OS X Snow Leopard并且需要以编程方式生成MD5crypt()密码以匹配在Ubuntu 8.04上生成的密码(如果盐以$ 1 $开头,则该平台上的crypt()使用MD5,因为它使用的是在glibc2中找到的crypt()具有该功能。)

OS X上有一个md5crypt例程,但不幸的是,它只是Tcl。

一个痛苦的选择是拆开openssl passwd命令的代码并根据它编写我自己的代码。

我猜测尝试编译glibc2并与OS X上的链接进行连接可能几乎是不可能的,如果不是不可能的话。

是否有人遇到问题并解决了问题?还是有建议? (我将向Apple提交一个错误,要求将其添加)

3 个答案:

答案 0 :(得分:0)

也许看看SSCrypto.framework(BSD许可的OpenSSL库包装器)或PolKit!

http://osx.hyperjeff.net/Apps/apps?f=openssl

此外,您可以通过MacPorts(端口信息libmd)获取libmd。

最后但并非最不重要的是osxcrypt项目(这是一个模块化设计的内核模块)。

  

OSXCrypt Framework基于实现可与OTHER cyphers一起使用的模块化内核模块的范例。例如,在mac上实现dm-cryppt现在非常简单。

答案 1 :(得分:0)

要回答我的问题,我目前没有看到在OS X上解决此问题的简单方法,不涉及滚动您自己的实现。

为了进一步推动这一点,这是Apple对我的增强请求的回应:

  

已经存在另一个密码   Mac OS X中的加密方案   crypt()仅为Unix提供   一致性。鉴于此   使用MD5重载crypt()   哈希是非标准的,没有   计划改变实施

     

我们现在正在关闭此错误   工程师都知道这个问题   将继续离线跟踪它。一个   对此问题的不同解决方案可能   将来会考虑。

因此,如果您在OS X上需要MD5-crypt(),那么您将不得不自己动手,直到它成为标准。

答案 2 :(得分:0)

在OSX上,尝试终端的openssl命令。这是示例语法..

  • 示例1:

    openssl passwd -1 -salt THE_SALT THE_PASSWORD $1$THE_SALT$dPJ6geFVt46feYgFzPgWE.

-1标志使用$ 1 $前缀(标准md5)。 -apr1标志使用$ apr1 $表示法(Apache算法)。

  • 示例2:

    openssl passwd -apr1 -salt THE_SALT THE_PASSWORD $apr1$THE_SALT$y28/ZvW2ge6QfRIZQpO82/

要获得更多选项/帮助,请输入openssl passwd --help