package Test;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;
import java.util.Scanner;
import java.nio.charset.StandardCharsets;
// 工厂方法接口
interface EncryptionAlgorithmFactory {
Cipher createCipher();
}
// 具体工厂类 - DES算法工厂
class DESAlgorithmFactory implements EncryptionAlgorithmFactory {
@Override
public Cipher createCipher() {
try {
return Cipher.getInstance("DES");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
// 具体工厂类 - IDEA算法工厂
class IDEAAlgorithmFactory implements EncryptionAlgorithmFactory {
@Override
public Cipher createCipher() {
try {
return Cipher.getInstance("AES");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
public class test1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请选择加密方法 (DES 或 IDEA):");
String algorithmType = scanner.nextLine();
// 使用工厂方法根据用户选择创建加密算法
EncryptionAlgorithmFactory algorithmFactory;
if ("DES".equalsIgnoreCase(algorithmType)) {
algorithmFactory = new DESAlgorithmFactory();
} else if ("IDEA".equalsIgnoreCase(algorithmType)) {
algorithmType="AES";
algorithmFactory = new IDEAAlgorithmFactory();
} else {
System.out.println("不支持此种加密方法!");
return;
}
try {
Cipher cipher = algorithmFactory.createCipher();
System.out.println("请输入要加密的内容:");
String dataToEncrypt = scanner.nextLine();
// 生成随机密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance(algorithmType);
SecretKey secretKey = keyGenerator.generateKey();
// 初始化加密模式
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
// 加密数据
byte[] encryptedData = cipher.doFinal(dataToEncrypt.getBytes(StandardCharsets.UTF_8));
String encryptedDataString = Base64.getEncoder().encodeToString(encryptedData);
System.out.println("初始数据: " + dataToEncrypt);
System.out.println("加密后数据: " + encryptedDataString);
} catch (Exception e) {
e.printStackTrace();
} finally {
scanner.close();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现