软件设计:实验3:工厂方法模式

实验3:工厂方法模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

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

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

 

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

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

实验要求:

1.画出对应的类图;

2.提交该系统的代码,该系统务必是一个可以能够直接使用的系统,查阅资料完成相应加密算法的实现;

3.注意编程规范。

 

1.

 

2.import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

import java.security.SecureRandom;

import java.util.Base64;

 

// 加密接口

interface Encryptor {

    String encrypt(String plainText) throws Exception;

}

 

// DES加密类

class DESEncryptor implements Encryptor {

    @Override

    public String encrypt(String plainText) throws Exception {

        Cipher cipher = Cipher.getInstance("DES");

        cipher.init(Cipher.ENCRYPT_MODE, getKey("DES"));

        byte[] output = cipher.doFinal(plainText.getBytes());

        return Base64.getEncoder().encodeToString(output);

    }

 

    private SecretKey getKey(String algorithm) throws Exception {

        KeyGenerator keyGenerator = KeyGenerator.getInstance(algorithm);

        keyGenerator.init(56); // DES key size

        return keyGenerator.generateKey();

    }

}

 

// IDEA加密类

class IDEAEncryptor implements Encryptor {

    @Override

    public String encrypt(String plainText) throws Exception {

        // IDEA加密实现,这里省略具体代码

        // 由于IDEA加密算法较为复杂,通常需要使用第三方库来实现

        return "Encrypted with IDEA";

    }

}

 

// 加密工厂类

class EncryptorFactory {

    public Encryptor getEncryptor(String type) {

        switch (type) {

            case "DES":

                return new DESEncryptor();

            case "IDEA":

                return new IDEAEncryptor();

            default:

                throw new IllegalArgumentException("Invalid encryption type");

        }

    }

}

 

// 测试类

public class EncryptionTest {

    public static void main(String[] args) {

        try {

            EncryptorFactory factory = new EncryptorFactory();

            Encryptor desEncryptor = factory.getEncryptor("DES");

            System.out.println("DES Encrypted: " + desEncryptor.encrypt("Hello, World!"));

 

            Encryptor ideaEncryptor = factory.getEncryptor("IDEA");

            System.out.println("IDEA Encrypted: " + ideaEncryptor.encrypt("Hello, World!"));

 

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

posted @ 2024-11-27 17:00  痛苦代码源  阅读(2)  评论(0编辑  收藏  举报