gpt4 book ai didi

python - 相等的字符串不会返回 true

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:25 25 4
gpt4 key购买 nike

我已经开始学习Python,我是从《Violent Python》这本书开始的。其中第一章描述了一个在 crypt 类的帮助下破解基于 *nix 的密码哈希的脚本。这是代码:

import crypt
def testPass(cryptPass):
salt = cryptPass[0:2]
dictFile = open('dictionary.txt','r')
for word in dictFile.readlines():
word = word.strip('\n')
cryptWord = crypt.crypt(word,salt)
print cryptPass+":"cryptWord
if(cryptPass == cryptWord):
print "[+] Password found : "+word
return

print "[-] Password Not Found.\n"
return
def main():
passFile = open('passwords.txt')
for line in passFile.readlines():
if ":" in line:
user = line.split(':')[0]
cryptPass = line.split(':')[1].strip(' ')
print "[*] Cracking Password For: "+user
testPass(cryptPass)
if __name__ == "__main__":
main()

我有一个passwords.txt文件,其中包含用户名:密码(密码哈希)字符串,以及另一个名为dictionary.txt的文件,其中包含字典单词。这些是passwords.txt文件的内容:

apple:HXJintBqUVCEY
mango:HXInAjNhZF7YA
banana:HXKfazJbFHORc
grapes:HXtZSWbomS0xQ

和dictionary.txt:

apple
abcd
efgh
ijkl
mnop

当我打印两者时,从 testpass() 方法计算出的密码哈希值和用户名 apple 的 passwords.txt 中计算出的密码哈希值是相等的。但这里所有 4 个用户名的输出都是“[-] 密码未找到”。为什么 == 测试在这里失败?

最佳答案

也许行尾有一个尾随 \n 。尝试改变:

        cryptPass = line.split(':')[1].strip(' ')

至:

        cryptPass = line.split(':')[1].strip('\n').strip(' ')

或更简单(如评论中所建议):

        cryptPass = line.split(':')[1].strip()

关于python - 相等的字符串不会返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38817168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com