使用md5/sha1散列命令的简单编程语言?

2024-10-01 13:44:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望创建一个简单的暴力密码破解器,它将散列来自stdin的输入,并将结果与现有散列(对于我的证券类)进行比较。在

不过,我从来没有做过任何涉及哈希的实际编程,因为到目前为止,它主要是概念/数学部分。有没有一种(相对)容易学习的语言,它有一个简单的hash命令?我的一个朋友推荐了Python,但我不确定在一两天内我是否还能找到其他东西。我懂一点C语言,但是散列似乎比较复杂,需要额外的库。在

另外,对于实际的哈希命令,任何语法上的帮助都是值得的。程序本身需要能够支持奇数散列方法,比如将一个值散列两次或使用不变的set salt,并且能够从stdin获取输入(用于johntheripper等程序)。在


Tags: 命令程序语言概念密码编程stdin语法
3条回答

假设只要求使用散列函数,而不是自己实现散列,Python's hashlib module有md5和sha1的例程:

[为python3更新,其中hashlib需要字节,而不是字符串:]

>>> import hashlib
>>> s = 'something to hash'
>>> sb = s.encode("utf8")
>>> hashlib.md5(sb)
<md5 HASH object @ 0x7f36f5ce3440>
>>> hashlib.md5(sb).hexdigest()
'6f4815fdf1f1fd3f36ac295bf39d26b4'
>>> hashlib.sha1(sb).hexdigest()
'72668bc961b0a78bfa1633f6141bcea69ca37468'

[旧版Python 2版本:]

^{pr2}$

我认为python是一个很好的选择。{a2很容易使用^和}加密原语。如果您已经知道一些C,那么可能只是将其与openssl libraries一起使用会更容易理解。在任何情况下,为您的首选语言(尤其是加密类)学习一个加密库通常是值得的,因为最终您将希望使用一些您不想手工编写代码的东西,并确信它是正确实现的。在

至于实际hash命令的语法,下面是python中使用PyCrypto获取SHA256哈希的示例(使用python3.2):

import Crypto.Hash.SHA256

to_hash = "hello, how are you?"
sha256 = Crypto.Hash.SHA256.new()
sha256.update(to_hash.encode())
dgst = sha256.hexdigest()
print(dgst)

产生输出

^{pr2}$

python中的hashlib库包含以下内容:

'md5', 'new', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'

详情请查阅: http://docs.python.org/release/3.1.3/library/hashlib.html

^{pr2}$

相关问题 更多 >