在python中使用(密码)解密SHA1

Bla*_*Ram 2 python encryption sha

我有一个用Python加密SHA-1的功能hashlib.我拿一个文件并用这个哈希加密内容.

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

Ósc*_*pez 8

SHA-1它不是加密算法,而是一种散列算法.根据定义,您不能"解密"使用SHA-1函数进行散列的任何内容,它没有反转.

如果你有一个任意的哈希密码,你可以做很少的事情来检索原始密码 - 如果你很幸运,密码可能在反向哈希的数据库中,但这是你可以去的.

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


Lui*_*rti 6

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

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

破解哈希涉及猜测散列各种不同的字符串并尝试将散列值与从数据库中非法获取的散列值进行匹配.互联网上有可用数百万个散列值的列表,可以更容易地进行散列破解,这些被称为彩虹表,可以通过使用Salts轻松应对.

值得注意的是,由于散列算法能够将GB的数据消化为明显更小的字符串,因此在数学上,两个不同的值可能具有相同的散列值.尽管这种情况非常罕见,但这是一个存在的问题,它被称为Hash Collision.

如果散列是可逆的,你能想象一下吗?硬盘驱动器将是可还原的,因为我们可以将数千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

Assymetric加密:http://en.wikipedia.org/wiki/Public-key_cryptography