【发布时间】:2017-05-24 02:10:47
【问题描述】:
我正在尝试 2 让这段代码正常工作,我的老师要我加密这些东西,以便它可以使用非字母字符,如“。”(哈哈!那个引用的东西看起来像哈利波特的金色告密者!)我认为制作带有 chrs 及其 ascii 值的字典会起作用,它确实用于加密。但是当我反转密码并尝试将 chrs 转换回来时,它不起作用。我认为一个变量正在重置,但不知道在哪里。请。帮助。
a_cipher = {
' ' : '32',
'!' : '33',
'"' : '34',
'#' : '35',
'$' : '36',
'%' : '37',
'&' : '38',
"'" : '39',
'(' : '40',
')' : '41',
'*' : '42',
'+' : '43',
',' : '44',
'-' : '45',
'.' : '46',
'/' : '47',
'0' : '48',
'1' : '49',
'2' : '50',
'3' : '51',
'4' : '52',
'5' : '53',
'6' : '54',
'7' : '55',
'8' : '56',
'9' : '57',
':' : '58',
';' : '59',
'<' : '60',
'=' : '61',
'>' : '62',
'?' : '63',
'@' : '64',
'A' : '65',
'B' : '66',
'C' : '67',
'D' : '68',
'E' : '69',
'F' : '70',
'G' : '71',
'H' : '72',
'I' : '73',
'J' : '74',
'K' : '75',
'L' : '76',
'M' : '77',
'N' : '78',
'O' : ' ',
'P' : '!',
'Q' : '"',
'R' : '#',
'S' : '$',
'T' : '%',
'U' : '&',
'V' : '86',
'W' : '87',
'X' : '88',
'Y' : '89',
'Z' : '90',
'[' : '91',
'\\' : '92' ,
']' : '93',
'^' : '94',
'_' : '95',
'`' : '96',
'a' : '97',
'b' : '98',
'c' : '99',
'd' : '100',
'e' : '101',
'f' : '102',
'g' : '103',
'h' : '104',
'i' : '105',
'j' : '106',
'k' : '107',
'l' : '108',
'm' : '109',
'n' : '110',
'o' : '111',
'p' : '112',
'q' : '113',
'r' : '114',
's' : '115',
't' : '116',
'u' : '117',
'v' : '118',
'w' : '119',
'x' : '120',
'y' : '121',
'z' : '122',
'{' : '123',
'|' : '124',
'}' : '125',}
reverse_cipher = {v: k for k, v in a_cipher.items()}
def encrypt(s, direction):
output = ""
encryptme=""
for ch in s:
if direction == "encrypt":
print('ch is '+ ch + ', a_cipher[ch] is '+ a_cipher[ch])
encryptme = output + a_cipher[ch]
print('output is ' + str(encryptme))
print(encryptme)
elif direction == "decrypt":
output= output + reverse_cipher[encryptme]
print('output is ' + str(output))
return output
a=encrypt(input("Encrypt"),"encrypt")
encrypt(a,"decrypt")
硬件分配:
扩展旋转密码 到目前为止,在每个旋转密码练习中,您都已将消息翻译成大写 加密之前的大小写字符。这简化了密码的设计,因为只有 26 字符需要旋转。 许多字符没有正确加密或根本没有加密。其中包括标点、数字、 小写字母和许多特殊字符($ & # + 等)。 在这个程序中,您将创建一个新的循环密码,该密码将利用更广泛的 人物。任务是在 ASCII 表中包含所有可显示的字符 从右大括号 } 开始的空格“ ”。 此轮换密码必须设计为具有与 Rot13 相同的主要优点,并且应该 放在 Crypto 类中。修改您的 encrypt4.py 程序以调用新的轮换 密码。将新程序另存为 encrypt5D.py。 1. 加密以下消息: 汉·索罗从达戈巴返回,率领叛军与伊沃克人反超 死星护盾发生器。通过此安全通道传输所有新订单。 2. 解密以下消息: |2CJO925O2O=:EE=6O=2>3[O=:EE=6O=2>3[O=:EE=6O=2>3]OO|2CJO925O2O=:EE=6O=2>3[O:E DO7=6646OH2DOH9:E6O2DOD?@H] 奖励(5 分):在密码中添加正确处理“换行”字符(ASCII 代码 10)。 奖励(1 分):向您的讲师发送一条额外的加密消息。 通过电子邮件将您的 encrypt5D.py 文件、crypto.py 文件以及上面 1. 和 2. 的输出发送到您的 讲师。将上面 1. 和 2. 的输出复制并粘贴到电子邮件中。”
【问题讨论】:
标签: python-3.x encryption