📅  最后修改于: 2023-12-03 15:26:05.399000             🧑  作者: Mango
该问题要求程序员写出一个Java程序,该程序能够接收一个字符串作为输入并将该字符串解密为明文。
根据题目要求,我们需要编写一个Java程序,能够接受一个字符串作为输入,并将其解密为明文。因此,我们需要了解字符串的加密和解密方法。在这里,我们选择使用Caesar密码(又称移位密码)来加密和解密字符串。
Caesar密码是一种简单的密码,它是通过将每个字母都向后移一个固定的位置来实现的。例如,如果移位数为3,则A变成D,B变成E,以此类推。解密的过程就是将每个字母都向前移动相同数量的位置。
我们可以按照以下步骤来实现该程序:
以下是实现这个程序的示例代码:
public class Caesar {
public static String encrypt(String plaintext, int shift) {
char[] plain = plaintext.toCharArray();
for (int i = 0; i < plain.length; i++) {
if (plain[i] >= 'A' && plain[i] <= 'Z') {
plain[i] = (char)(((plain[i] - 'A' + shift) % 26) + 'A');
} else if (plain[i] >= 'a' && plain[i] <= 'z') {
plain[i] = (char)(((plain[i] - 'a' + shift) % 26) + 'a');
}
}
return new String(plain);
}
public static String decrypt(String ciphertext, int shift) {
char[] cipher = ciphertext.toCharArray();
for (int i = 0; i < cipher.length; i++) {
if (cipher[i] >= 'A' && cipher[i] <= 'Z') {
cipher[i] = (char)(((cipher[i] - 'A' - shift + 26) % 26) + 'A');
} else if (cipher[i] >= 'a' && cipher[i] <= 'z') {
cipher[i] = (char)(((cipher[i] - 'a' - shift + 26) % 26) + 'a');
}
}
return new String(cipher);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter text: ");
String text = scanner.nextLine();
System.out.print("Enter shift: ");
int shift = scanner.nextInt();
String encrypted = encrypt(text, shift);
String decrypted = decrypt(encrypted, shift);
System.out.println("Encrypted text: " + encrypted);
System.out.println("Decrypted text: " + decrypted);
}
}
需要注意的是,为了将结果输出到控制台,我们使用了Scanner和System.in/out。在实际应用中,我们可能需要将输入和输出改为从文件或其他来源读取/写入。
在这个问题中,我们以Caesar密码为例,介绍了如何将加密算法实现为Java程序。虽然这只是一种简单的加密算法,但该程序提供了一个基础的框架,可以用于实现更复杂的加密、解密算法。