大一Python实验

img

题目如图,用很基础的方法就可以,只需要代码就行,谢谢(ノ´ヮ´)ノ*:・゚✧!截止到15日22点

基于new bing部分指引作答:
以下是使用Python实现该功能的代码:

def encrypt_file(input_file, output_file, key):
    with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out:
        key_binary = bin(key)[2:]  # Convert key to binary string
        key_length = len(key_binary)

        while True:
            data = f_in.read(key_length)
            if not data:
                break

            encrypted_data = ''.join(chr(ord(char) ^ int(bit)) for char, bit in zip(data, key_binary))
            f_out.write(encrypted_data)

def decrypt_file(input_file, output_file, key):
    encrypt_file(input_file, output_file, key)  # Decryption is the same as encryption

# 测试加密与解密过程
plaintext_file = 'plaintext.txt'
ciphertext_file = 'ciphertext.txt'
decrypted_file = 'decrypted.txt'
key = 0b1111_0000

# 加密过程
encrypt_file(plaintext_file, ciphertext_file, key)

# 解密过程
decrypt_file(ciphertext_file, decrypted_file, key)

请确保将上述代码中的 plaintext.txt 替换为实际的明文文件名,ciphertext.txt 替换为加密后的密文文件名,以及 decrypted.txt 替换为解密后的明文文件名。同时,根据需要设置正确的密钥 key。

运行该代码后,将对明文文件进行加密,并将加密结果写入密文文件。然后,将密文文件进行解密,并将解密结果写入解密文件。最后,您可以通过比较解密文件与原始明文文件来验证加密和解密过程的正确性。

给代码自己会演算一遍吗

需要写一下设计思路 代码讲解啥的不 效果实现啥的


def encrypt_file(input_file, output_file, key):
    with open(input_file, 'rb') as file_in:  # 以二进制模式打开输入文件
        with open(output_file, 'wb') as file_out:  # 以二进制模式打开输出文件
            while True:
                data = file_in.read(len(key))  # 从输入文件读取与密钥长度相同的数据块
                if not data:  # 如果没有更多数据可读,跳出循环
                    break
                encrypted_data = bytes(x ^ y for x, y in zip(data, key))  # 异或操作加密数据
                file_out.write(encrypted_data)  # 将加密后的数据写入输出文件

def decrypt_file(input_file, output_file, key):
    encrypt_file(input_file, output_file, key)  # 加密和解密过程相同

# 测试加密和解密过程
key = b'11110000'  # 密钥,用二进制表示
input_file = 'plaintext.txt'  # 明文文件名
encrypted_file = 'ciphertext.txt'  # 密文文件名
decrypted_file = 'decrypted.txt'  # 解密后的文件名

encrypt_file(input_file, encrypted_file, key)  # 加密明文文件
decrypt_file(encrypted_file, decrypted_file, key)  # 解密密文文件

在上面的示例中,我们定义了两个函数encrypt_file和decrypt_file,分别用于加密和解密文件。这些函数接受输入文件名、输出文件名和密钥作为参数。加密过程中,我们使用异或操作对文件数据进行加密,并将结果写入输出文件。解密过程与加密过程相同,所以我们可以直接调用encrypt_file函数来实现解密。

你可以将明文文本保存为plaintext.txt文件,运行上述代码进行加密和解密操作。加密后的结果将保存在ciphertext.txt文件中,解密后的明文将保存在decrypted.txt文件中。请注意,密钥key需要用二进制表示,例如b'11110000'。

请根据你的需要修改文件名、密钥和其他相关参数,以满足你的实际需求。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7680964
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python 提取出所有学生的序号,姓名,成绩(简单易懂,代码可以直接运行,非正则表达式)
  • 你还可以看下python参考手册中的 python- 定义扩展类型:已分类主题- 属性管理
  • 除此之外, 这篇博客: Python基础(学习笔记)中的 先来说私有变量和私有方法,他们都是通过在名字前面加两个下划线__来实现的。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • class IsClass():
        def __init__(self,name,age):
            self.name = name
            self.__age = age
        
        def run(self):
            print('我是一个{}类'.format(self.name))
        def __sound(self):
            print('我的年龄是{}'.format(self.__age))

    cat = IsClass('猫',10)
    cat.__sound()
    print(cat.__age)
    运行结果:
    AttributeError: 'IsClass' object has no attribute '__sound'
    # Traceback 异常堆栈错误

     

    上面运行的结果直接报错,并且提示属性错误,类对象没有__sound属性,但是事实是有,只是这是私有变量用户不能进行访问所以报错私有变量也是同样的不能访问,所以在类当中需要不让用户看到一些内容就添加私有属性和方法,这些私有属性和方法在类的内部可以自由使用。

            类变量和类方法,这个方法就是指类里面创建的属于类的方法,用户可以查看而且是所以用户都可以看见。就像QQ一样,大家都有一个共同的界面和布局,好友各不相同列表信息各不相同,相同的界面和布局就是类变量,自己的联系人就是实例变量。

            示例代码如下:

    class Bank():
    
        profit = 0.0005 # 类变量
        def __init__(self,name,money):
            self.name = name
            self.money = money
        
        @classmethod
        def run(cls):
            print('每天利率为:{}'.format( cls.profit))
    
    my_bank = Bank('帅哥',10000)
    my_bank.run()
    
            

    类变量和类方法可以通过对象查看也可以通过类调用,书上说是用类调用(可以查看一下详细说明),其中要注意类方法的创建需要用到装饰器,@符合开头,并且类名括号里第一个参数是cls就是class的简写,也是通过cls.来调用类变量。

            还有一点,类变量和实例变量不能交叉使用,类方法里不能用实例变量,实例方法里不能用类变量,会报错!(怎么解决,请自己去网上寻找答案)

  • 您还可以看一下 唐宇迪老师的Python数据分析(机器学习)经典案例实战课程中的 环境配置(数据代码右边符号下载->)小节, 巩固相关知识点