#加密程序,能够加密的内容是英文和汉字。同时加密并且解密
#就是说,一段话中既有中文又有英文,标点符号不用处理。
#加密规则,获取ascii码数字,加二十为加密,减20为解密,中间用|分割
def encrypt(ch):
if '\u4e00' <= ch <= '\u9fff':
#汉字环形加密
if (ord(ch)+20) > ord('\u9fff'):
return chr(ord('\u4e00')+ ord(ch) +19 - ord('\u9fff'))+ '|'
return chr(ord(ch)+20) + '|'
elif '\x41' <= ch <='\x5a' or '\x61' <= ch <= '\x7A':
#英文字母环形加密
if '\x61' <= ch <= '\x7A':
if (ord(ch)+20) > ord('\x7A'):
return chr(ord('\x41')+ ord(ch) +19 - ord('\x7A'))+ '|'
elif '\x41' <= ch <='\x5a' :
if (ord(ch)+20) > ord('\x5a') :
return chr(ord('\x61') + ord(ch) + 19 - ord('\x5a'))+ '|'
return chr(ord(ch)+20)+ '|'
else:
return ch+ '|'
def decrypt(ch):
#汉字解密
if '\u4e00' <= ch <= '\u9fff':
if ord(ch)-20 < ord('\u4e00'):
return chr(ord('\u9fff')- (ord('\u4e00')- (ord(ch)-19)))+ '|'
return chr(ord(ch)-20)+ '|'
#英文字母解密
elif '\x41' <=ch <='\x5a' or '\x61' <= ch <= '\x7A':
if '\x41' <=ch <='\x5a' :
if (ord(ch)-20) < ord('\x41'):
return chr(ord('\x7A')-(ord('\x41') - ord(ch)+19))+ '|'
elif '\x61' <= ch <= '\x7A':
if (ord(ch)-20) < ord('\x61'):
return chr(ord('\x5a')-(ord('\x61') - ord(ch)+19))+ '|'
return chr(ord(ch)-20)+ '|'
else:
return ch+ '|'
enstring = "我有钱的100abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ呢。"
deresult = ""
enresult = ""
for i in enstring:
enresult += encrypt(i)
print(enresult)
#戥|朝|铅|皘|1|0|0|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|,|U|V|W|X|Y|Z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|呶|,|
destring = enresult.split("|")[:-1]
for i in destring:
deresult += decrypt(i)
print(deresult)
#我|有|钱|的|1|0|0|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|,|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|呢|,|