已知加密方法将每个英文字母替换为ASC码字母表顺序后移对应的第n个字母,例如假设n=1,则A变为B,Z变为A,b变为c,f变为g,其他依次类推。说明:只对纯英文字母进行转换,区分大小写,其他符号如空格、回车、换行等都保持,不做转换。例如:明文: There is a dog.n=1密文: Uifsf jt b eph.请你根据这个加密和解密的原理,设计实现加密和解密的工具,可以把任何纯英文字母构成的明文进行加密和解密操作。
时间: 2024-02-17 15:05:11 浏览: 201
下面是一个简单的 Java 代码实现,可以对纯英文字母构成的明文进行加密和解密操作:
```java
public class EncryptDecryptTool {
private static final int LETTER_COUNT = 26;
/**
* 加密方法
*
* @param plaintext 明文
* @param n 偏移量
* @return 密文
*/
public static String encrypt(String plaintext, int n) {
StringBuilder ciphertext = new StringBuilder();
for (char c : plaintext.toCharArray()) {
if (Character.isLetter(c)) {
int base = Character.isUpperCase(c) ? 'A' : 'a';
int index = (c - base + n) % LETTER_COUNT;
ciphertext.append((char) (base + index));
} else {
ciphertext.append(c);
}
}
return ciphertext.toString();
}
/**
* 解密方法
*
* @param ciphertext 密文
* @param n 偏移量
* @return 明文
*/
public static String decrypt(String ciphertext, int n) {
StringBuilder plaintext = new StringBuilder();
for (char c : ciphertext.toCharArray()) {
if (Character.isLetter(c)) {
int base = Character.isUpperCase(c) ? 'A' : 'a';
int index = (c - base - n + LETTER_COUNT) % LETTER_COUNT;
plaintext.append((char) (base + index));
} else {
plaintext.append(c);
}
}
return plaintext.toString();
}
}
```
这个工具类有两个方法,一个是 `encrypt()` 方法用于加密,另一个是 `decrypt()` 方法用于解密。这两个方法都接受两个参数,第一个参数是要加密或解密的字符串,第二个参数是偏移量,即对应的 n 值。
在加密方法中,我们首先遍历明文中的每个字符,如果这个字符是英文字母,就将其转换为对应的 ASCII 码值,然后将 ASCII 码值减去相应的基准值(A 或 a),再加上偏移量 n,最后将结果对 26 取模得到新的 ASCII 码值,并将其转换为对应的字符。如果这个字符不是英文字母,则直接将其添加到密文字符串中。
在解密方法中,我们也是遍历密文中的每个字符,如果这个字符是英文字母,就将其转换为对应的 ASCII 码值,然后将 ASCII 码值减去相应的基准值(A 或 a),再减去偏移量 n,最后将结果对 26 取模得到新的 ASCII 码值,并将其转换为对应的字符。如果这个字符不是英文字母,则直接将其添加到明文字符串中。
下面是一个示例代码,演示了如何使用这个工具类进行加密和解密操作:
```java
public class Main {
public static void main(String[] args) {
String plaintext = "There is a dog.";
int n = 1;
String ciphertext = EncryptDecryptTool.encrypt(plaintext, n);
System.out.println("加密后的密文:" + ciphertext);
String decryptedText = EncryptDecryptTool.decrypt(ciphertext, n);
System.out.println("解密后的明文:" + decryptedText);
}
}
```
在这个示例中,我们将明文设置为 "There is a dog.",偏移量 n 设置为 1。运行这个示例,输出如下:
```
加密后的密文:Uifsf jt b eph.
解密后的明文:There is a dog.
```
可以看到,加密后的密文为 "Uifsf jt b eph.",解密后得到的明文与原始明文相同,即 "There is a dog."。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![html](https://img-home.csdnimg.cn/images/20241231044918.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)