首页 > 其他分享 >工厂方法模式

工厂方法模式

时间:2024-10-23 19:32:11浏览次数:1  
标签:方法 self des idea 模式 工厂 key encrypted data

 

1、理解工厂方法模式的动机,掌握该模式的结构;

2、能够利用工厂方法模式解决实际问题。

 

[实验任务一]:加密算法

目前常用的加密算法有DES(Data Encryption Standard)和IDEA(International Data Encryption Algorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。

1. 类图

 

 

依赖命令pip install pycryptodome

from abc import ABC, abstractmethod

from Crypto.Cipher import DES, IDEA

 

 

# 抽象加密器类

class Encryptor(ABC):

    @abstractmethod

    def encrypt(self, data):

        pass

 

    @abstractmethod

    def decrypt(self, encrypted_data):

        pass

 

 

# DES加密器类

class DESEncryptor(Encryptor):

    def __init__(self, key):

        self.key = key

        self.des = DES.new(self.key, DES.MODE_ECB)

 

    def encrypt(self, data):

        data = data + b' ' * (8 - len(data) % 8)

        return self.des.encrypt(data)

 

    def decrypt(self, encrypted_data):

        return self.des.decrypt(encrypted_data).rstrip()

 

 

# IDEA加密器类

class IDEAEncryptor(Encryptor):

    def __init__(self, key):

        self.key = key

        self.idea = IDEA.new(self.key, IDEA.MODE_ECB)

 

    def encrypt(self, data):

        data = data + b' ' * (8 - len(data) % 8)

        return self.idea.encrypt(data)

 

    def decrypt(self, encrypted_data):

        return self.idea.decrypt(encrypted_data).rstrip()

 

 

# 加密器工厂类

class EncryptorFactory:

    @staticmethod

    def create_encryptor(algorithm_type, key):

        if algorithm_type == 'DES':

            return DESEncryptor(key)

        elif algorithm_type == 'IDEA':

            return IDEAEncryptor(key)

key = b'12345678'

data = b'Hello, World!'

 

# 使用DES加密

des_encryptor = EncryptorFactory.create_encryptor('DES', key)

encrypted_data_des = des_encryptor.encrypt(data)

decrypted_data_des = des_encryptor.decrypt(encrypted_data_des)

print("DES加密后:", encrypted_data_des)

print("DES解密后:", decrypted_data_des)

 

# 使用IDEA加密

idea_encryptor = EncryptorFactory.create_encryptor('IDEA', key)

encrypted_data_idea = idea_encryptor.encrypt(data)

decrypted_data_idea = idea_encryptor.decrypt(encrypted_data_idea)

print("IDEA加密后:", encrypted_data_idea)

print("IDEA解密后:", decrypted_data_idea)

标签:方法,self,des,idea,模式,工厂,key,encrypted,data
From: https://www.cnblogs.com/aixin52129211/p/18498145

相关文章

  • 实验2:简单工厂模式
    [实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。实验要求:1.画出对应的类图;2.提交源代码;3.注意编程规范。类图:  2、代......
  • ESXI执行此操作的权限被拒绝的解决方法
    ESXI执行此操作的权限被拒绝的解决方法不知道什么原因,用浏览器登录ESXI,输入了正确用户和密码,提示执行此操作的权限被拒绝。其原因是系统为防止远程用户,直接登录到此主机。而开启了“锁定模式”我们只需要将“锁定模式”的功能关闭。问题就能解决。具体操作如下: 我们在主机端......
  • 实验2:简单工厂模式
    [实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。  1. 类图   2.源代码//抽象产品类:Person接口publicinterfaceP......
  • Java设计模式的学习之适配器模式
    适配器模式目录适配器模式适配器模式的主要角色包括:适配器模式的两种主要形式:应用场景:优点:缺点:适配器模式(AdapterPattern)是一种结构型设计模式,其主要目的是将一个类的接口转换成客户端期望的另一个接口,使得原本因接口不兼容而不能一起工作的类可以一起工作。适配器模式通常用......
  • OpenSSL异步模式流程梳理
    源码来源于OpenSSLMasterCommitIDd550d2aae531c6fa2e10b1a30d2acdf373663889。总览核心入口函数为ssl_start_async_job,以SSL_do_handshake为入口举例分析,同时通过标注步骤【1~N】,来明确阅读的顺序。步骤【1】到步骤【18】为一个阶段步骤【19】到步骤【23】为一个阶......
  • 产品有了模式切换功能,众口不再难调!
    在科技飞速发展的今天,我们的产品迎来了重大突破——模式切换功能。这一创新之举,让众口不再难调。无论你是追求高效便捷的商务人士,还是喜欢沉浸式体验的娱乐爱好者,亦或是注重简约实用的日常用户,都能在不同模式中找到最适合自己的状态。轻松切换,满足你的各种需求。从此,不再为......
  • [Ansible实践笔记]自动化运维工具Ansible(一):初探ansible&ansible的点对点模式
    文章目录Ansible介绍核心组件任务执行方式实验前的准备更新拓展安装包仓库在ansible主机上配置ip与主机名的对应关系生成密钥对将公钥发送到被管理端,实现免密登录测试一下是否实现免密登录常用工具ansibleansible—docansible—playbook主要配置文件Ansible模块配置......
  • 网站后台用户名修改方法?
    登录后台管理系统使用当前的管理员账号和密码登录到网站的后台管理系统。进入用户管理界面导航到“用户管理”或类似名称的菜单选项,找到需要修改用户名的用户记录。选择目标用户在用户列表中找到需要修改用户名的用户,点击编辑按钮或直接在该行进行操作。修改......
  • 解决 PbootCMS 内页显示 404 错误的方法
    检查URL规则配置登录PbootCMS后台。导航至 配置参数 -> URL规则。选择 伪静态模式 并保存。添加伪静态规则根据你的服务器环境,选择合适的伪静态规则文件。一般情况下,Apache环境使用 .htaccess 文件。Apache环境配置将 rewrite 文件夹中的 .hta......
  • tomcat从安装到配置全过程(外加servlet炸包添加方法)
    tomcat写这篇笔记的原因很简单:今天脑海中冒出tomcat配置和servlet配置的问题,记不太清了,就像找找笔记,我明明记得之前记过相关的笔记,就是再笔记里面找不到了,只好重新梳理归纳一下了!一、tomcat启动后首页访问问题1.项目初始创建的jsp文件删除,会导致启动后首页出现404错误二、To......