【问题标题】:Python implementation of sha512_crypt.csha512_crypt.c 的 Python 实现
【发布时间】:2014-01-31 16:17:51
【问题描述】:

我正在寻找来自http://www.akkadia.org/drepper/SHA-crypt.txt 的 sha512_crypt.c 的 100% 纯 Python 实现。

我正在学习 Python。我想了解代码(并将其与 C 代码等进行比较)。我对 Python 的了解不足以自己编写它——即使我这样做了,我也不相信自己能把它做好。我没有那方面的专业知识。所以请不要告诉我自己去写代码来回答这个问题。那不是我的问题。我正在寻找一个现有的 100% Python 实现,它提供与the original sha512_crypt.c written by Ulrich Drepper 相同的输出。

为了确保我的问题很清楚,我正在寻找的答案可能是:

  1. “我确信不存在该 C 代码的 100% Python 实现。”

  2. “这里是您可以下载的 Python 代码的链接。”

(尽管我没有寻求帮助编写特定代码,但由于元讨论,我被告知在这里发帖。这个问题毕竟是关于学习 Python 代码的。)

顺便说一句,我知道这里有一个 Java 实现:ftp://ftp.arlut.utexas.edu/java_hashes/

我正在寻找 Python 等价物。

谢谢。

更新:james-mills 为我回答了这个问题。但是今天我刚刚了解了 Nullege:Python 源代码的搜索引擎
http://www.nullege.com/ 这在未来可能会派上用场。

我还了解到 startpage.com 将接受“filetype:py”作为搜索词,它会返回一些不错的结果。不幸的是,我用 dadduckgo 尝试了同样的方法,但没有返回任何结果。

【问题讨论】:

    标签: python python-2.7 encryption cryptography sha


    【解决方案1】:

    这有点主观,因为你有很多选择,但试试这个:http://google.com/search?q="sha512_crypt"+filetype:py。请注意文件名周围的引号以确保您得到完全匹配(否则 Google 会将下划线视为空格)。

    我不熟悉 Drepper 的工作或 Python,所以我不能说是否有任何完全匹配。

    【讨论】:

    • 这些结果都没有回答这个问题。这个问题非常具体。 Python 中的 SHA512 算法不是这个问题的答案。我不确定如何使问题更清楚。不过,已经有人答对了。
    • 在这种情况下,您可以尝试google.com/search?q="sha512_crypt"+filetype:py。请注意文件名周围的引号以确保您获得完全匹配(Google 会将下划线视为空格)。我不熟悉 Drepper 的工作或 Python,所以我不能说是否有任何完全匹配。
    • MountainX - 如果有兴趣阅读有关 Python 和加密的信息,这可能也会有所帮助:Hacking Secret Ciphers with Python: A beginner's guide to cryptography and computer programming with Python
    • 感谢您的额外建议。将“sha512_crypt”与 filetype:py 一起使用确实会显示 James Mills 在他的答案中找到的源代码。该代码是 Drepper 的 C 代码的 Python 实现,这正是我所寻找的。 :-)
    • 是的,当然。完毕。引号和文件类型将来应该对您有所帮助。
    【解决方案2】:

    查看passlib,它似乎有一个SHA512 crypt 的纯Python 实现,它回退到:

    这个类将使用两个可能的后端中的第一个: stdlib crypt(),如果主机操作系统支持 SHA512-Crypt(大多数 Linux 系统)。 passlib 中内置的 SHA512-Crypt 的纯 python 实现。 您可以通过调用 get_backend() 方法查看正在使用的后端。

    找到源代码:https://code.google.com/p/passlib/source/browse/passlib/handlers/sha2_crypt.py

    【讨论】:

    • 我认为 Passlib 可能有纯 Python 实现,但是当我去寻找 Python 源时,我找不到它。如果您设法找到指向源的链接,我会接受您的回答。谢谢!
    • 是的,我自己正在浏览代码库。他们文档中的陈述实际上可能是错误的:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多