偷懒的加密方法,只是避免客户直接看到数据,无法避开刻意解密。
加密的程序
定义的函数输入为“待加密的数据”,输出为“加密完成的数据”
在这个代码中,我们对每个字符的ASCII值进行了乘以3的操作,并确保结果在0到255之间。然后,我们使用Python内置的oct
函数将结果转换为八进制字符串,并去掉了前缀'0o'
。如果八进制字符串的长度为1,我们会在前面添加一个'0'
,以确保每个八进制数至少有两个字符,这是为了保持输出格式的一致性。
最后,我们在一个if __name__ == "__main__":
块中测试了这个函数,这是Python中常用的一种方式,用于检查当前脚本是否作为主程序运行。如果是,就执行测试代码。
def Data_encryption(data): # 数据加密
encrypted_chars = []
append = encrypted_chars.append # 提前获取append方法,减少查找时间
# 原始字符处理
for char in data:
if char != '\n':
# 原始加密方法:字符ASCII值乘以3,然后转换为八进制表示
octal_value = (ord(char) * 3) % 256 # 确保值在0-255之间
octal_str = oct(octal_value)[2:] # 获取八进制表示并去除前缀'0o'
if len(octal_str) == 1:
octal_str = '0' + octal_str # 确保至少有两个字符
oct_char = octal_str + ' ' # 添加空格分隔
else:
oct_char = char
append(oct_char) # 使用提前获取的append方法
return ''.join(encrypted_chars)
# 测试函数
if __name__ == "__main__":
test_data = "Hello, World!\n"
encrypted_data = Data_encryption(test_data)
print("原始数据:", test_data)
print("加密后的数据:", encrypted_data)
运行结果如下:
解密的程序
为了考虑数据的兼容与确保解密的数据不发生错误,需要增加一些确保数据的程序:保留换行符、确定加密数据的值在八进制范围内。
代码如下:
def Data_encryption(data): # 数据加密
encrypted_chars = []
append = encrypted_chars.append
for char in data:
if char != '\n':
# 转换为八进制表示,然后将每个字符的八进制值乘以3
octal_value = oct(ord(char))[2:].replace(' ', '')
encrypted_value = int(octal_value, 8) * 3
# 确保加密后的值在八进制表示范围内
encrypted_octal_str = oct(encrypted_value)[2:].zfill(3)
oct_char = encrypted_octal_str
else:
oct_char = 'N' # 用特殊字符'N'代表换行符
append(oct_char + ' ') # 添加空格分隔
return ''.join(encrypted_chars)
def Data_decryption(encrypted_data): # 数据解密
decrypted_chars = []
for i, oct_char in enumerate(encrypted_data.split()):
if oct_char == 'N': # 检查是否为特殊字符'N'代表换行符
decrypted_chars.append('\n')
else:
try:
# 将八进制字符串转换为整数,然后除以3得到原始的八进制值
decrypted_value = int(oct_char, 8) // 3
# 将原始的八进制值转换为ASCII字符
original_char = chr(decrypted_value)
decrypted_chars.append(original_char)
except ValueError:
# 如果转换失败(非法的八进制数),保留原始字符
decrypted_chars.append(oct_char)
return ''.join(decrypted_chars).replace(' ', ' ')
# 测试解密函数
if __name__ == "__main__":
test_data = "Hello, World!\n"
encrypted_data = Data_encryption(test_data)
print("原始数据:", test_data)
print("加密后的数据:", encrypted_data)
decrypted_data = Data_decryption(encrypted_data)
print("解密后的数据:", decrypted_data)
运行结果如下: