SHA256加解密(Python2.7)-同字不同hash
SHA256 encryption and decryption (Python 2.7) - same word but different hash
我想写一个可以加密和解密文字的脚本。但是我 运行 遇到了一个问题,无法理解。我用来加密的代码是这样的:
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"。我得到这个哈希 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
当我想解密时,我得到了这个
fc8252c8dc55839967c58b9ad755a59b61b67c13227ddae4bd3f78a38bf394f7
我的问题是,为什么我得到两个具有相同功能的不同散列?最好的问候,汗
8c69…a918
是 "admin"
.
的 SHA256 散列
fc82…94f7
是 "admin\n"
.
的 SHA256 散列
file.readlines()
在它读取的每行末尾包含一个尾随换行符。要删除它,您可以使用 w.rstrip("\n")
.
rec = raw_input()
里面没有换行符。
另一方面,for w in wordk:
迭代的每一行都有一个尾随换行符。
因此您必须 rstrip("\n")
您的行或使用 splitlines()
在执行散列之前删除最后一个换行符。
我想写一个可以加密和解密文字的脚本。但是我 运行 遇到了一个问题,无法理解。我用来加密的代码是这样的:
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"。我得到这个哈希 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 当我想解密时,我得到了这个 fc8252c8dc55839967c58b9ad755a59b61b67c13227ddae4bd3f78a38bf394f7 我的问题是,为什么我得到两个具有相同功能的不同散列?最好的问候,汗
8c69…a918
是 "admin"
.
fc82…94f7
是 "admin\n"
.
file.readlines()
在它读取的每行末尾包含一个尾随换行符。要删除它,您可以使用 w.rstrip("\n")
.
rec = raw_input()
里面没有换行符。
另一方面,for w in wordk:
迭代的每一行都有一个尾随换行符。
因此您必须 rstrip("\n")
您的行或使用 splitlines()
在执行散列之前删除最后一个换行符。