如何'加密'文件

时间:2015-06-09 12:22:59

标签: python

只是缩短了这段时间

我的整体作业必须读取文件,对其进行加密,然后将加密数据写入新文件。

我试过的是这个:

filename=input("Enter file name:")
fr=open(filename)
keep_going=0
data = fr.readline()
fw=open('encrypted_file.txt', 'w')
for x in range(len(data)):
    fw.write(data[x])       
fw.close()
fr.close()

3 个答案:

答案 0 :(得分:1)

如果您的目标只是将字符串中的字母与您指定的其他字母交换,那么解决方案如下:

decrypted = 'abcdefghijklmnopqrstuvwxyz' #normal alphabet
encrypted = 'MNBVCXZLKJHGFDSAPOIUYTREWQ' #your "crypted" alphabet

#Encription
text = 'cryptme' #the string to be crypted
encrypted_text = ''
for letter in text:
    encrypted_text += encrypted[decrypted.find(letter)]
print encrypted_text
#will print BOWAUFC

#Decription
text = encrypted_text #"BOWAUFC" in this example
decrypted_text = ''
for letter in text:
    decrypted_text += decrypted[encrypted.find(letter)]
print decrypted_text
#will print cryptme

请注意,您的“加密字母”不会转换任何空格或任何符号,只会转换为小写字母,如果您的文字中还有其他符号,则必须包含它们。

但是,这不是加密任何东西的正确方法!正如其他人已经建议的那样,请查找适当的加密算法。

答案 1 :(得分:0)

我建议您查看Simple Crypt,这一切都取决于您想要的安全级别。

如果我理解你的问题,Simple Crypt就应该做你需要的工作。

https://pypi.python.org/pypi/simple-crypt

答案 2 :(得分:0)

这是我制作的Vigenère Cipher的一个非常简单的实现:

from string import ascii_uppercase as alphabet

val = {}
for x in xrange(len(alphabet)):
    val[alphabet[x]] = x
    val[x] = alphabet[x]

encrypt = lambda a, b: ''.join(val[(val[a[i]]+val[b[i%len(b)]])%26] for i in xrange(len(a)))
decrypt = lambda a, b: ''.join(val[(val[a[i]]-val[b[i%len(b)]])%26] for i in xrange(len(a)))

a是消息,而b是关键(我知道它有点简洁,但它适用于代码高尔夫比赛)。那里有很多密码;你不必使用这个,也许不应该。这只是为了让你考虑可能的方法去做这件事。我认为一个非常简单的密码是Caesar Cipher

我想指出的另一件事是,您的代码现在看起来并不是模块化的 - 这是您老师的要求之一。我建议将其分解为打开文件的功能,执行实际**加密的功能,以及" main"用于获取用户输入并调用其他功能的功能。

祝你好运!