【问题标题】:Decryption of files using python使用python解密文件
【发布时间】:2017-04-20 22:36:15
【问题描述】:

嘿,伙计们,我已经开始做一些 python 编码,我能够创建这个程序来解密我提供的加密文本,使用我提供的密钥有人可以帮助我将这种文本解密更改为文件解密。

import sys

def decrypt(cipher, key):

plain = ""
for index in range(len(cipher)):
    if cipher[index].isalpha():

        if cipher[index].isupper():
            plain = plain + chr((ord(cipher[index]) - 64 - key) % 26 + 64)


        elif cipher[index].islower():
            plain = plain + chr((ord(cipher[index]) - 96 - key) % 26 + 96)

    else:
            plain = plain + cipher[index]

return plain

in_filename = sys.argv[1]
key = int(sys.argv[2])
out_filename = sys.argv[3] 

with open(in_filename, "r") as f:
    encrypted = f.read()

decrypted = decrypt(encrypted, key)

with open(out_filename, "w+") as f:
    f.write(decrypted)




cipher = sys.argv[1]
plain = sys.argv[1]
key = int(sys.argv[2])
print('{}'.format(cipher))
print('{}'.format(decrypt(cipher, key)))

我可以通过在终端输入这个命令来使用我当前的程序

python cipher.py 'Yaholy' 7 将这个词解密为“Rather”

【问题讨论】:

    标签: python python-2.7 encryption caesar-cipher


    【解决方案1】:

    您可以使用已有的,只需从文件中读取,然后将结果写回。

    in_filename = sys.argv[1]
    key = int(sys.argv[2])
    out_filename = sys.argv[3] # if you want
    
    with open(in_filename, "r") as f:
        encrypted = f.read()
    
    decrypted = decrypt(encrypted, key)
    
    with open(out_filename, "w+") as f:
        f.write(decrypted)
    
    print(decrypted) # if you don't want to save to a file
    

    然后你可以调用它,例如,python cipher.py encrypted.txt 7 decrypted.txt

    【讨论】:

    • 但是我希望能够输入任何文件,所以如果有人给我一个带有任何随机名称的加密文件,我就不必进入代码来更改打开的文件名。所以我想知道是否有办法使用 sys.argv[]
    • 获取输入的方式相同。例如,只需将"read_file.txt" 替换为sys.argv[1],然后使用python cipher.py file.txt 7 运行您的代码。你可以用同样的方法替换输出文件。
    • 好的,我明白了,谢谢,但是如果你不介意帮我解决这个问题,我应该把这段代码放在我的代码中的什么地方。
    • 好的,我已经编辑了我的代码,但我自己都搞糊涂了,我收到一个错误,说 in_filename 未定义
    • 不要修改你的decrypt()函数。以前还好。在其后添加答案中的所有内容。
    猜你喜欢
    • 2021-05-03
    • 2014-01-18
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多