输入由中文、大小写英文和数字构成的代号
宇符串,运用类恺撒密码加密解密。其中英文大小写、数字加密方法是分别循环右移5
位,中文是循环右移100位。加密输出之后并进行反向解密。
提示:中文字符的Unicode编码范围是10x
4e00,0x9fa5],共20902个字符。请以右移10
0位循环移位数量,编写中文文本的类恺撒密码加解密方法。
def caesar_encrypt(text):
encrypted_text = ""
for char in text:
if 'A' <= char <= 'Z':
encrypted_text += chr((ord(char) - ord('A') + 5) % 26 + ord('A'))
elif 'a' <= char <= 'z':
encrypted_text += chr((ord(char) - ord('a') + 5) % 26 + ord('a'))
elif '0' <= char <= '9':
encrypted_text += chr((ord(char) - ord('0') + 5) % 10 + ord('0'))
elif '\u4e00' <= char <= '\u9fa5':
encrypted_text += chr((ord(char) - ord('\u4e00') + 100) % 20902 + ord('\u4e00'))
else:
encrypted_text += char
return encrypted_text
def caesar_decrypt(text):
decrypted_text = ""
for char in text:
if 'A' <= char <= 'Z':
decrypted_text += chr((ord(char) - ord('A') - 5) % 26 + ord('A'))
elif 'a' <= char <= 'z':
decrypted_text += chr((ord(char) - ord('a') - 5) % 26 + ord('a'))
elif '0' <= char <= '9':
decrypted_text += chr((ord(char) - ord('0') - 5) % 10 + ord('0'))
elif '\u4e00' <= char <= '\u9fa5':
decrypted_text += chr((ord(char) - ord('\u4e00') - 100) % 20902 + ord('\u4e00'))
else:
decrypted_text += char
return decrypted_text
text = input("请输入要加密的文本:")
encrypted_text = caesar_encrypt(text)
print("加密后的文本:", encrypted_text)
decrypted_text = caesar_decrypt(encrypted_text)
print("解密后的文本:", decrypted_text)
这个问题, 没看明白详细说说 ?
加密代码如下:
def encrypt(code):
result = ""
for char in code:
if '\u4e00' <= char <= '\u9fa5': # 中文
result += chr((ord(char) - 0x4e00 + 100) % (0x9fa5 - 0x4e00 + 1) + 0x4e00)
elif 'a' <= char <= 'z': # 小写字母
result += chr((ord(char) - ord('a') + 5) % 26 + ord('a'))
elif 'A' <= char <= 'Z': # 大写字母
result += chr((ord(char) - ord('A') + 5) % 26 + ord('A'))
elif '0' <= char <= '9': # 数字
result += chr((ord(char) - ord('0') + 5) % 10 + ord('0'))
else:
result += char # 其他字符不加密
return result
解密代码如下:
def decrypt(code):
result = ""
for char in code:
if '\u4e00' <= char <= '\u9fa5': # 中文
result += chr((ord(char) - 0x4e00 - 100) % (0x9fa5 - 0x4e00 + 1) + 0x4e00)
elif 'a' <= char <= 'z': # 小写字母
result += chr((ord(char) - ord('a') - 5) % 26 + ord('a'))
elif 'A' <= char <= 'Z': # 大写字母
result += chr((ord(char) - ord('A') - 5) % 26 + ord('A'))
elif '0' <= char <= '9': # 数字
result += chr((ord(char) - ord('0') - 5) % 10 + ord('0'))
else:
result += char # 其他字符不解密
return result
querySer=salesOR_NoDupNA.loc[:,'Quantity']>0
salesOR_NoDupNA=salesOR_NoDupNA.loc[querySer,:]
querySer1=salesOR_NoDupNA.loc[:,'UnitPrice']>0
salesOR_NoDupNA=salesOR_NoDupNA.loc[querySer1,:]
print('after delete outlier:',salesOR_NoDupNA.shape)
after delete outlier: (392692, 12)