crypto的一些脚本
base64
1 import base64 2 3 4 def encode(s): 5 bytes_s = s.encode(encoding='utf-8') 6 b64en_s = base64.b64encode(bytes_s) 7 print("加密后:{}".format(b64en_s)) 8 return 9 10 11 def decode(s): 12 b64de_s = base64.b64decode(s).decode('utf-8') 13 print("解密后:{}".format(b64de_s)) 14 return 15 16 17 if __name__ == "__main__": 18 data = input('请输入字符串:') 19 print("选项:\n1、加密 2、解密") 20 op = int(input('请输入你的选择:')) 21 if op == 1: 22 encode(data) 23 else: 24 decode(data)
凯撒密码
1 def Caesar(s): 2 print('初始的字符串:{}'.format(s)) 3 if 'A' <= s[0] <= 'Z': 4 for i in range(1, 27): 5 offset_s = '' 6 for j in range(len(s)): 7 tmp = (ord(s[j]) + i) 8 if tmp > ord('Z'): 9 tmp -= 26 10 offset_s += chr(tmp) 11 print('偏移值为{}的字符串:{}'.format(i, offset_s)) 12 else: 13 for i in range(1, 27): 14 offset_s = '' 15 for j in range(len(s)): 16 tmp = (ord(s[j]) + i) 17 if tmp > ord('z'): 18 tmp -= 26 19 offset_s += chr(tmp) 20 print('偏移值为{}的字符串:{}'.format(i, offset_s)) 21 return 22 23 24 if __name__ == '__main__': 25 data = input('请输入字符串:') 26 Caesar(data)
md5
1 # 由于MD5模块在python3中被移除 2 # 在python3中使用hashlib模块进行md5操作 3 4 import hashlib 5 6 # 待加密信息 7 str = input('请输入要加密的字符串:') 8 9 # 创建md5对象 10 m = hashlib.md5() 11 12 # Tips 13 # 此处必须encode 14 # 若写法为m.update(str) 报错为: Unicode-objects must be encoded before hashing 15 # 因为python3里默认的str是unicode 16 # 或者 b = bytes(str, encoding='utf-8'),作用相同,都是encode为bytes 17 b = str.encode(encoding='utf-8') 18 m.update(b) 19 str_md5 = m.hexdigest() 20 # md5在线解密网站:https://cmd5.com/ 21 22 print('MD5加密前为 :' + str) 23 print('MD5加密后为 :' + str_md5) 24 25 # 另一种写法:b‘’前缀代表的就是bytes 26 # str_md5 = hashlib.md5(b'this is a md5 test.').hexdigest() 27 # print('MD5加密后为 :' + str_md5)
莫斯密码(需要分隔符)
1 # 没有分割符的话,可以试试在线网站:http://zhongguosou.com/zonghe/moErSiCodeConverter.aspx 2 MorseList = { 3 ".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E", "..-.": "F", "--.": "G", 4 "....": "H", "..": "I", ".---": "J", "-.-": "K", ".-..": "L", "--": "M", "-.": "N", 5 "---": "O", ".--.": "P", "--.-": "Q", ".-.": "R", "...": "S", "-": "T", 6 "..-": "U", "...-": "V", ".--": "W", "-..-": "X", "-.--": "Y", "--..": "Z", 7 8 "-----": "0", ".----": "1", "..---": "2", "...--": "3", "....-": "4", 9 ".....": "5", "-....": "6", "--...": "7", "---..": "8", "----.": "9", 10 11 ".-.-.-": ".", "---...": ":", "--..--": ",", "-.-.-.": ";", "..--..": "?", 12 "-...-": "=", ".----.": "'", "-..-.": "/", "-.-.--": "!", "-....-": "-", 13 "..--.-": "_", ".-..-.": '"', "-.--.": "(", "-.--.-": ")", "...-..-": "$", 14 ".-...": "&", ".--.-.": "@", ".-.-.": "+", 15 } 16 17 18 def morse(string: object, sign: object) -> object: 19 # 分割,字符串string,分割标识符sign 20 lists = string.split(sign) 21 print('解密后:',end='') 22 for code in lists: 23 print(MorseList.get(code), end="") 24 25 26 if __name__ == '__main__': 27 data = input('请输入带分隔符的字符串:') 28 morse(data,'/')
URL编码
1 import urllib.parse 2 3 4 def URL_en(s): 5 print("URL编码:{}".format(urllib.parse.quote(s))) 6 return 7 8 9 def URL_de(s): 10 print('URL解码:{}'.format(urllib.parse.unquote(s))) 11 return 12 13 14 def menu(data_s): 15 op = int(input('1、编码 2、解码\n请输入选项:')) 16 if op == 1: 17 URL_en(data_s) 18 else: 19 URL_de(data_s) 20 return 21 22 23 if __name__ == '__main__': 24 data = input('请输入数据:') 25 menu(data)