1. 软件公司OA系统需要提供一个加密模块。为了提高开发效率,现需要重用已有的加密算法(恺撒加密,取模加密等)。这些算法封装在一些由第三方提供的类中,有些甚至没有源代码。试使用适配器模式设计该加密模块,实现在不修改现有类的基础上重用第三方加密方法。 凯撒加密算法
时间: 2024-05-24 07:12:47 浏览: 59
public interface Encryption {
String encrypt(String input);
}
public class CaesarEncryption {
public String caesarEncrypt(String input, int shift) {
StringBuilder output = new StringBuilder();
for (char c : input.toCharArray()) {
if (Character.isLetter(c)) {
char base = Character.isLowerCase(c) ? 'a' : 'A';
c = (char) (base + (c - base + shift) % 26);
}
output.append(c);
}
return output.toString();
}
}
public class ModEncryption {
public String modEncrypt(String input, int key) {
StringBuilder output = new StringBuilder();
for (char c : input.toCharArray()) {
if (Character.isLetter(c)) {
char base = Character.isLowerCase(c) ? 'a' : 'A';
c = (char) (base + (c - base + key) % 26);
}
output.append(c);
}
return output.toString();
}
}
public class CaesarEncryptionAdapter implements Encryption {
private CaesarEncryption caesarEncryption = new CaesarEncryption();
private int shift;
public CaesarEncryptionAdapter(int shift) {
this.shift = shift;
}
@Override
public String encrypt(String input) {
return caesarEncryption.caesarEncrypt(input, shift);
}
}
public class ModEncryptionAdapter implements Encryption {
private ModEncryption modEncryption = new ModEncryption();
private int key;
public ModEncryptionAdapter(int key) {
this.key = key;
}
@Override
public String encrypt(String input) {
return modEncryption.modEncrypt(input, key);
}
}
// Usage
Encryption caesarEncryption = new CaesarEncryptionAdapter(3);
Encryption modEncryption = new ModEncryptionAdapter(5);
String encrypted1 = caesarEncryption.encrypt("hello world");
String encrypted2 = modEncryption.encrypt("hello world");
System.out.println(encrypted1); // khoor zruog
System.out.println(encrypted2); // mjqqt btwqi
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)