在python中用(密码)解密SHA1

2024-06-08 03:13:16 发布

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

我有一个在Python中使用SHA-1加密的函数,使用hashlib。我获取一个文件并用这个散列加密内容。

如果我为加密文本文件设置了密码,我可以使用此密码解密并用原始文本还原文件吗?


Tags: 文件函数文本密码内容hashlibsha文本文件
3条回答

散列函数不同于普通的密码算法。它们通常被称为单向密码,因为过程数据是不可逆的。

与对称和非对称加密不同,散列通过断言散列值本身来使用,而不是解密和断言纯文本值。要在使用散列时验证登录,需要散列用户刚刚尝试登录的密码,并将其与数据库中的散列进行比较。如果匹配,则登录成功。

破解散列需要猜测各种不同的字符串,并尝试将散列值与从数据库中非法获取的值匹配。因特网上有许多列表,其中有数百万个已经散列的值,使散列破解变得更容易,这些列表被称为彩虹表,使用盐类可以轻松地对其进行反击。

还值得注意的是,由于散列算法能够将数GB的数据摘要为更小的字符串,从数学上讲,两个不同的值可能具有相同的散列。尽管这种情况很少见,但这是一个存在的问题,它被称为散列冲突

如果散列是可逆的,你能改造吗?硬盘驱动器是可重设的,因为我们可以将数千GB的数据散列成一小串文本,并根据需要反转它们。这将是数据压缩和存储的涅盘。


相关维基百科文章:

哈希算法:http://en.wikipedia.org/wiki/Hash_function

彩虹表:http://en.wikipedia.org/wiki/Rainbow_table

盐:http://en.wikipedia.org/wiki/Salt_(cryptography)

碰撞:http://en.wikipedia.org/wiki/Collision_(computer_science)

对称加密:http://en.wikipedia.org/wiki/Symmetric-key_algorithm

非对称加密:http://en.wikipedia.org/wiki/Public-key_cryptography

散列函数是单向票据。你不能用它们来加密。

哈希函数算法是通过模运算、异或运算和其他常见的单向运算来实现的。

您可能会试图找到用来生成散列的参数,但在理论上,您永远无法100%确定它是正确的值。

例如,尝试使用一个真正简单的(在密码学中无用的)哈希函数模10。此函数返回十个不同的值。如果是7,你可能会猜到条目是7、137和1234567。和md5,sha1和更好的一样。

如您所见,在使用hash函数的情况下,该函数只返回40个字节,其中的文件要大得多(甚至可能只有几百兆字节),理论上每个可能的hash都有无限多的文件。

SHA-1不是一个加密算法,而是一个散列算法。根据定义,不能“解密”使用SHA-1函数散列的任何内容,它没有逆函数。

如果你有一个任意的散列密码,你几乎无法检索原始密码-如果你幸运的话,密码可能在reverse hashes的数据库中,但这是你能做的。

消息提取算法期望原始密码执行验证-该算法将散列提供的纯文本密码,并将其与存储的散列密码进行比较,只有当它们相等时,才会显示纯文本消息。

相关问题 更多 >

    热门问题