基于python对excel文件字符格式变换(低程度避免数据直接展现)

偷懒的加密方法,只是避免客户直接看到数据,无法避开刻意解密。

加密的程序

定义的函数输入为“待加密的数据”,输出为“加密完成的数据”

在这个代码中,我们对每个字符的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)

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千城千景

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值