我目前正在学习如何使用Python中的凯撒密码方法进行加密/解密。我已经研究了如何加密'14:00/船只就位',以接收'7,21,18,_6,21,22,3,6,_14,5,18,_22,1,_3,2,6,22,7,22,2,1',但正在努力如何编写解密代码。具体地说,我不确定如何使用if/else语句正确地反转原始加密,以及如何将数字转换回字母。每封信将根据小时(班次)的变化。
解密代码
import string
def decrypt(s):
s = "14:00/7,21,18_6,21,22,3,6_14,5,18_22,1_3,2,6,22,7,22,2,1"
shift = int(s[0:2])
time, plaintext = s.split("/")
print(shift)
print(time)
print(plaintext)
letters = string.ascii_lowercase
result = []
for char in plaintext:
print(char)
if char == '_':
result = result + ' '
else:
decode = (int(char) - shift) %26
result = result + str(decode) +','
print(result)
def main():
decode = decrypt("14:00/7,21,18_6,21,22,3,6_14,5,18_22,1_3,2,6,22,7,22,2,1")
main()
您的代码需要的主要东西是ord
和chr
函数,用于生成字符,并说明按shift
移位是负的(使用模数是正确的)。以下为缩短版。您可以根据自己的代码调整ord和chr的使用,以及Shift的“环绕”数学:
def decrypt(s):
shift = int(s[0:2])
time, txt = s.split("/")
txt = txt.replace('_',',-1,').split(",")
print(txt)
txt = (' ' if c=='-1' else chr(ord('a')+(int(c)-shift+26)%26) for c in txt)
return "".join(txt)
print(decrypt("14:00/7,21,18_6,21,22,3,6_14,5,18_22,1_3,2,6,22,7,22,2,1"))
您还可以使用像['a'、'b'、'c'、'd'...]
这样的字符列表,并使用列表中的位置来获取所需的字符。
我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。
首先,我是编程的新手,所以要温柔。而且,我一直在做这个任务,但没有任何结果。任务是创建一个凯撒密码程序,它加密或解密一个段落最多100个字符。实际上是两个独立的实验室。第一个实验是加密,然后第二个实验是解密。一旦我弄清楚了如何创建加密程序,解密程序应该很简单,因为我可以只进行语义更改来解密而不是加密。无论如何,这是我到目前为止的代码。它通过了他们给我们的5个测试中的4个,但出于某种原因,有一个测试
我想知道如何限制加密的ASCII范围从32-126。 这个是用来解密的 我的加密工作得很好(当我引用解密函数时),但我的解密并不像它应该的那样工作。 额外注意:我们只需要在编码时进行右移,给出一个字符串供整个程序加密和解密(“这是C++”) 注意:在添加更多代码描述的过程中
问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的
这里是一个加密的消息,首先使用3个位置的凯撒密码,然后5个位置。 解密时应该说: 好的,这是我写的类(您将需要所有的导入),我想感谢任何提前帮助的人: