SHA256加密和解密(Python2.7)-相同的字但不同的哈希

SHA256加密和解密(Python2.7)-相同的字但不同的哈希,python,encryption,hash,sha256,sha,Python,Encryption,Hash,Sha256,Sha,我想写一个脚本,可以加密和解密的话。但我遇到了一个问题,无法理解。我用来加密的代码如下: 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:

我想写一个脚本,可以加密和解密的话。但我遇到了一个问题,无法理解。我用来加密的代码如下:

 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”。我得到这个散列8C6976E5B54104154BDE908BD4Deed15DFB167A9C873FC4B8A81F6F2AB448A918 当我想解密的时候,我得到了这个 FC8252C8DC55839967C58B9AD755A59B61B67C13227DDAE4BD3F78BF394F7
我的问题是,为什么我用同一个函数得到两个不同的散列?向您致意,Khan是
“admin”
的SHA256散列

fc82…94f7
“admin\n”
的SHA256哈希

file.readlines()
在读取的每行末尾都包含一个尾随的换行符。要删除它,可以使用
w.rstrip(“\n”)
rec=raw\u input()
中没有换行符

另一方面,
在wordk:
中为w迭代的每一行都有一个尾随的换行符


因此,在执行哈希之前,您必须
rstrip(“\n”)
行或使用
splitlines()
删除最后一个换行符。

基于反勾号的语法适用于长度小于一行的代码格式化字符串。对于多行块,在选择代码后,使用编辑器中的
{}
按钮将每行缩进四个空格,或者自己添加这些空格。不要将您正在执行的操作描述为“加密”和“解密”,因为这两种操作都是错误和混乱的。并确保从
读线
中获取的字符串末尾去掉换行符,读线包括它们,原始输入不包含加密。打印
repr(yourstring)
以完全明确的形式获取字符串。如果散列不同,则原始值的
repr()
可能也会出现。nod。我认为这里隐藏着一个很好的问题,但它类似于“为什么在使用原始输入()与readlines()读取时,输入字符串的哈希值不同?”——简言之,这是一个在进行了更多初始诊断后得出的问题。谢谢,我现在明白了。