【问题标题】:Generating MD5 password on OS X在 OS X 上生成 MD5 密码
【发布时间】:2010-08-08 07:39:04
【问题描述】:

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

在 OS X 上有一个 md5crypt 例程,但不幸的是,它仅适用于 Tcl。

一个痛苦的选择是拆开 openssl passwd 命令的代码并在此基础上编写我自己的代码。

我猜想在 OS X 上编译 glibc2 并与它链接可能几乎是不可能的。

有没有人遇到过这个问题并解决了?或者有什么建议? (我将向 Apple 提交一个错误,要求添加它)

【问题讨论】:

  • 请注意:雷达 8285595 已提交请求 Apple 增强 crypt()。

标签: c macos cryptography md5


【解决方案1】:

在 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

【讨论】:

    【解决方案2】:

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

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

    此外,您还可以通过 MacPorts (port info libmd) 获取 libmd。

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

    OSXCrypt 框架基于实现可与其他密码一起使用的模块化内核模块的范例。例如,在 mac 上实现 dm-cryppt 现在非常容易。

    【讨论】:

      【解决方案3】:

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

      为了进一步说明这一点,以下是 Apple 对我的增强请求的回应:

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

      我们现在正在关闭这个错误,因为我们 工程师意识到了这个问题,并且 将继续离线跟踪。一个 对此问题的不同解决方案可能 以后会考虑的。

      因此,如果您在 OS X 上需要 MD5-crypt(),您将不得不自行开发,直到它成为标准。

      【讨论】:

        猜你喜欢
        • 2016-04-09
        • 1970-01-01
        • 2011-08-09
        • 2010-12-02
        • 1970-01-01
        • 2011-10-31
        • 2011-09-22
        • 1970-01-01
        相关资源
        最近更新 更多