【问题标题】:Decrypting a Caesar Cypher password in Python在 Python 中解密 Caesar Cypher 密码
【发布时间】:2022-09-27 12:04:40
【问题描述】:

我正在上一个使用 Python 的编程课程,对于我们的期末项目,我们正在寻找加密和解密密码。我们从密码列表开始:

 #The password list - We start with it populated for testing purposes
 passwords = [[\"yahoo\",\"XqffoZeo\"],[\"google\",\"CoIushujSetu\"]]

然后我们有我们的加密密钥:

 #The encryption key for the caesar cypher
 encryptionKey=16

以及要求查找密码的代码:

 if(choice == \'2\'): #Lookup at password
    print(\"Which website do you want to lookup the password for?\")
    for keyvalue in passwords:
        print(keyvalue[0])
    passwordToLookup = input()
    for key, value in passwords:
        if key == passwordToLookup:
            print(value)

我需要的是 print(value) 打印出密钥的反面,以便在打印出密码时对其进行解密。谁能指出我正确的方向?

  • 如果您想对字符进行算术运算,请查看内置函数 ord 及其逆函数 chr。您也可以查看str.translate,但这可能比您想要的更多。
  • 标签caesar-cipher有很多问题。你做过研究吗?
  • 这是一个任务,而不是一个问题。
  • 是的,我昨天花了大约四个小时,大约 90 分钟在这里寻找答案。

标签: python encryption key caesar-cipher


【解决方案1】:

凯撒密码用固定数量的位置替换字母表中的每个字母。因此,如果encryptionKey 是16,那么字母a --> q 和z --> p。

def encrypt(text):
    result = ""
    encryptionKey = 16
    for i in range(len(text)):
        char = text[i]
        if (char.isupper()):  #check if upper case
            result += chr((ord(char) + encryptionKey-65)%26 + 65)
        else:
            result += chr((ord(char) + encryptionKey-97)%26 + 97)
    return result

text = "XqffoZeo"
print ("Text : "+ text) 
print ("Encrypted : " + encrypt(text))

那么你的输出将是:

Output:
Text : XqffoZeo
Encrypted : NgvvePue

【讨论】:

  • 谢谢你。但是,当我尝试运行此代码时,出现此错误。文件“C:/Users/kyuss/PycharmProjects/practice4/main.py”,第 16 行输出:^ SyntaxError: invalid syntax Process finished with exit code 1
  • 第 16 行是什么?确保空格或制表符的数量正确。我没有语法错误,它对我有用。
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多