11.11
[实验任务一]:加密算法
目前常用的加密算法有DES(Data Encryption Standard)和IDEA(International Data Encryption Algorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。
package jiami;
// Method接口
interface Method {
String work(String input);
}
package jiami;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;
import java.util.Base64;
// IDEA加密算法实现 (示例中模拟实现,实际Java标准库不直接支持IDEA)
class IDEA implements Method {
// 为了简化,这里将 IDEA 的实现与 DES 类似进行模拟
private SecretKey secretKey;
public IDEA() {
try {
KeyGenerator keyGen = KeyGenerator.getInstance("AES"); // 使用AES代替
keyGen.init(128, new SecureRandom());
this.secretKey = keyGen.generateKey();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public String work(String input) {
try {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal(input.getBytes());
return Base64.getEncoder().encodeToString(encryptedData);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package jiami;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;
import java.util.Base64;
// DES加密算法实现
class DES implements Method {
private SecretKey secretKey;
public DES() {
try {
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56, new SecureRandom());
this.secretKey = keyGen.generateKey();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public String work(String input) {
try {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal(input.getBytes());
return Base64.getEncoder().encodeToString(encryptedData);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package jiami;
// 工厂接口MethodFactory
interface MethodFactory {
Method produceMethod();
}
package jiami;
// IDEA工厂类
class IDEAFactory implements MethodFactory {
@Override
public Method produceMethod() {
return new IDEA();
}
}
package jiami;
// DES工厂类
class DESFactory implements MethodFactory {
@Override
public Method produceMethod() {
return new DES();
}
}
package jiami;
import java.util.Scanner;
// 客户端类
public class Client {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 选择加密算法
System.out.println("请选择加密算法 (输入 1 表示 DES,输入 2 表示 IDEA):");
int choice = scanner.nextInt();
scanner.nextLine(); // 清除缓冲区
MethodFactory factory;
if (choice == 1) {
factory = new DESFactory();
} else if (choice == 2) {
factory = new IDEAFactory();
} else {
System.out.println("无效的选择!");
return;
}
// 创建加密实例
Method method = factory.produceMethod();
// 输入需要加密的数据
System.out.println("请输入要加密的文本:");
String input = scanner.nextLine();
// 加密并输出结果
String encryptedText = method.work(input);
System.out.println("加密结果为:" + encryptedText);
scanner.close();
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步