Java 实现凯撒密码的加密与解密
时间: 2023-10-17 11:05:31 浏览: 183
加密:
```
public static String caesarEncrypt(String plainText, int shift) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < plainText.length(); i++) {
char ch = (char) (((int) plainText.charAt(i) + shift - 65) % 26 + 65);
result.append(ch);
}
return result.toString();
}
```
解密:
```
public static String caesarDecrypt(String cipherText, int shift) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < cipherText.length(); i++) {
char ch = (char) (((int) cipherText.charAt(i) - shift - 65 + 26) % 26 + 65);
result.append(ch);
}
return result.toString();
}
```
其中,`shift` 代表偏移量,`65` 是大写字母 A 的 ASCII 码。
相关问题
java凯撒密码加密解密
Java中可以实现凯撒密码的加密和解密功能。下面是一个简单的示例代码,展示了如何使用Java实现凯撒密码加密和解密:
```java
public class CaesarCipher {
public static String encrypt(String plaintext, int key) {
StringBuilder ciphertext = new StringBuilder();
for (int i = 0; i < plaintext.length(); i++) {
char ch = plaintext.charAt(i);
if (Character.isLetter(ch)) {
char base = Character.isLowerCase(ch) ? 'a' : 'A';
ch = (char) (((ch - base + key) % 26) + base);
}
ciphertext.append(ch);
}
return ciphertext.toString();
}
public static String decrypt(String ciphertext, int key) {
return encrypt(ciphertext, 26 - key);
}
}
// 使用示例
String plaintext = "Hello, World!";
int key = 3;
String ciphertext = CaesarCipher.encrypt(plaintext, key);
String decryptedText = CaesarCipher.decrypt(ciphertext, key);
System.out.println("加密后的文本:" + ciphertext);
System.out.println("解密后的文本:" + decryptedText);
```
在上述示例中,`encrypt`方法用于对明文进行加密,`decrypt`方法用于解密密文。加密和解密过程都是通过将字母在字母表上向后或向前移动固定的偏移量来实现的。
java凯撒密码加密解密思路
Java实现凯撒密码加密解密的思路如下:
1. 首先定义一个字符串变量,存储需要加密或解密的文本。
2. 定义一个整数变量,表示加密或解密的偏移量。
3. 对于加密操作,将字符串中的每个字符按照偏移量进行位移,生成新的加密字符串。
4. 对于解密操作,将加密字符串中的每个字符按照偏移量进行反向位移,生成原始字符串。
5. 最后输出加密或解密后的字符串。
具体实现可以参考以下代码:
// 定义加密函数
public static String encrypt(String text, int offset) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char c = (char) (text.charAt(i) + offset);
result.append(c);
}
return result.toString();
}
// 定义解密函数
public static String decrypt(String text, int offset) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char c = (char) (text.charAt(i) - offset);
result.append(c);
}
return result.toString();
}
// 测试加密解密函数
public static void main(String[] args) {
String text = "Hello, World!";
int offset = 3;
String encrypted = encrypt(text, offset);
String decrypted = decrypt(encrypted, offset);
System.out.println("原始文本:" + text);
System.out.println("加密后文本:" + encrypted);
System.out.println("解密后文本:" + decrypted);
}
阅读全文