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()读取时,输入字符串的哈希值不同?”——简言之,这是一个在进行了更多初始诊断后得出的问题。谢谢,我现在明白了。