1

所以目前我在过去的几个小时里遇到了问题。我浏览了许多堆栈溢出帖子并尝试了每一个建议。我的问题是,我有一个程序可以从文本文件中获取单词并对其进行 MD5 加密。

            fileName = raw_input("> ")
            if fileName.endswith(".txt") or fileName.endswith(".lst"):
                    fopen = open(fileName, 'r')
            else:
                    fileName = fileName + ".txt"
                    fopen = open(fileName, 'r')

            m = hashlib.md5()

            for line in fopen:
                    sleep(1)
                    m.update(line)
                    encHash = m.hexdigest()
                    hashed = [line, encHash]
                    new_line = []
                    for elem in hashed:
                            new_line.extend(elem.strip('\n').split(' '))
                    searchfile = open("Passwords.txt").read()

                    if line in searchfile:
                            print ""
                    else:
                            fopen = open("Passwords.txt", 'a')
                            fopen.write(str(hashed))
                            fopen.write("\n")
                            fopen.close
                            print str(new_line)

现在您可以看到,我已经处理了输出的新行字符。但是加密版本的末尾仍然有 \n 。所以不是“12345”被加密,而是“12345\n”。

在此处输入图像描述

在此处输入图像描述

我试过 rstrip() 和 strip()。但这似乎不起作用!任何帮助将不胜感激。

谢谢

保罗

编辑 我不知道我做了什么,我只是重新编写了代码并且它工作正常!感谢所有的建议。

        elif choice == "2":
            os.system('clear')
            fileName = raw_input('Filename: ')
            fopen = open(fileName, 'rb')

            for line in fopen:
                    line = line.rstrip('\n')
                    enc = hashlib.md5()
                    enc.update(line)
                    encHash = enc.hexdigest()
                    hashed = {line:encHash}
                    fwrite = open('Password.txt', 'a')
                    hashed = str(hashed)
                    data = open("Password.txt").read()
                    if hashed in data:
                            print hashed
                    else:
                            fwrite.write(hashed)
                            fwrite.write("\n")
                            fwrite.close
                            print hashed
4

1 回答 1

0

我不知道 Python,但听起来它可能与您打开文件的方式有关。

尝试使用 open(fileName, 'rb') 而不是 open(fileName, 'r')。

此链接描述了 \r\n \n 差异。以二进制形式打开文件会将换行符转换为与您运行代码的系统相关的换行符序列。

http://docs.python.org/2/library/functions.html#open

于 2013-10-29T22:35:14.177 回答