我正在使用OS X Snow Leopard并且需要以编程方式生成MD5crypt()密码以匹配在Ubuntu 8.04上生成的密码(如果盐以$ 1 $开头,则该平台上的crypt()使用MD5,因为它使用的是在glibc2中找到的crypt()具有该功能。)
OS X上有一个md5crypt例程,但不幸的是,它只是Tcl。
一个痛苦的选择是拆开openssl passwd命令的代码并根据它编写我自己的代码。
我猜测尝试编译glibc2并与OS X上的链接进行连接可能几乎是不可能的,如果不是不可能的话。
是否有人遇到问题并解决了问题?还是有建议? (我将向Apple提交一个错误,要求将其添加)
答案 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