参加了人工智能Python编程特训营这门课程,在这里记录一下自己的学习过程。
加密技术的基本分类对称式加密:加密和解密使用同一个密钥。信息接收双方都需事先知道密钥和加密解密算法且密钥是相同的,之后便是对数据进行加密解密了。常见的有DES,AES。
2. 非对称式加密:加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。常用的有RSA。发送双方A,B事先均生成一堆密匙
A将自己的公有密匙发送给B,B将自己的公有密匙发送给A
如果A要给B发送消息,则需要用B的公有密匙进行消息加密
A将加密后的消息发送给B
B接收到消息后再用自己的私有密匙进行消息解密
项目实战目标:实现一个加密解密程序。
2. 要求:对于一段消息中的中文和英文进行加密和解密,消息中的数字和标点符号不用处理。其中,加密结果是中文和英文对应的ASCII码值,并且使用“|”进行分隔。
3. 加密:
def encrypt(ori):
"""加密规则,获取中文和英文对应的ASCII码数字,中间用"|"分割:param ori: 明文:return result: 密文"""
result = "" #密文
for char in ori:
value = ord(char) #将明文转换为对应的ASCII码
if 65<= value <= 90 or 97<= value <= 122 or 19968 <= value <= 40875: #如果是英文或中文
result += str(value) + "|"
else:
result += char + "|"
return result
4. 解密:
def dencrypt(ori):
"""解密:param ori: 密文:return result: 明文"""
#将密文以"|"为分隔符进行拆解,并且去掉最后多出来的部分
ori_list = ori.split("|")
ori_list.remove("")
result = "" #明文
for char in ori_list:
try:
value = int(char) #char是数字或者ASCII码值
if 65 <= value <= 90 or 97 <= value <= 122 or 19968 <= value <= 40875: # char是英文或中文
result += chr(value)
else: #char为数字
result += char
except: #char为符号
result += char
return result
5. 实验结果:
#输入一段话:
message = input("Please input your message>>") #哈哈,123haha!>>
#加密解密
encry_result = encrypt(message)
print(encry_result) #21704|21704|,|1|2|3|104|97|104|97|!|>|>|
dencry_result = dencrypt(encry_result)
print(dencry_result) #哈哈,123haha!>>