只是缩短了这段时间
我的整体作业必须读取文件,对其进行加密,然后将加密数据写入新文件。
我试过的是这个:
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()
答案 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就应该做你需要的工作。
答案 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"用于获取用户输入并调用其他功能的功能。
祝你好运!