SHA256加密和解密(Python 2.7) - 相同但不同的哈希



我想编写一个可以加密和解密单词的脚本。但是我遇到了一个问题,无法理解。我用来加密的这个代码是:

 def encrypt():
    print "Enter string for encryption: n"
    rec = raw_input()
    enkr =hashlib.sha256(rec).hexdigest()
    print enkr

和我用来根据字典解密的代码是:

def decrypt():
    print "Enter hash for decryption: n"
    rec = raw_input()
    print "Enter path of wordlist"
    list = raw_input()
    wordl=open(list,"r")
    wordk = wordl.readlines()
    for w in wordk:
        w = hashlib.sha256(w).hexdigest()
        if rec.lower() != w:
            print "Not this " + w
        elif rec.lower() ==w:
            print "Found ! " + w
            break
        else:
            print "Nothing found ! "

例如,假设我想加密单词" admin"。我得到了这个哈希8C6976E5B5410415BDE908BD4DEE15DFB167A9C873FC4BBBB8A81F6F6F6F2AB4448A918当我想解密时,我明白了FC8252C8DC555839967C58B9AD755A59B61B67C13227DDAE4BD3F78A38BF394F7我的问题是,为什么我会得到两个不同的哈希,具有相同的功能?最好的问候,可汗

8c69…a918"admin"的sha256哈希。

fc82…94f7"adminn"的sha256哈希。

file.readlines()在其读取的每行末尾包含一个尾随的新线。要删除它,您可以使用w.rstrip("n")

rec = raw_input()中没有新线。

另一方面,for w in wordk:迭代的每一行都有一个尾线。

因此,您必须使用rstrip("n")或使用splitlines()在执行Hash之前摆脱最后的Newline字符。

最新更新