密码移位代码javaJava语言实现利用移位密码E={E:Z26→Z26, Ek (m) = m + k (mod26)| m∈M, k∈K } 要求K的值和明文要求接受键盘输入,写出进行加密和解密的程序。
时间: 2024-11-27 21:10:48 浏览: 11
python实现密码学课程作业 cipher 课程设计 算法
移位密码(Caesar Cipher)是一种简单的替换式密码,在Java中实现这个功能可以分为两个部分:加密和解密。这里是一个基础的示例,它会提示用户输入明文、移位数k以及是否进行加密或解密操作。
```java
import java.util.Scanner;
public class CaesarCipher {
private static final char ALPHABET[] = 'A' - 'a' + "zyxwvutsrqponmlkjihgfedcba".toCharArray();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入明文:");
String plaintext = scanner.nextLine();
System.out.println("请输入移位数k:");
int shift = scanner.nextInt();
System.out.println("请选择操作(1-加密, 2-解密):");
int mode = scanner.nextInt();
if (mode == 1) { // 加密
String ciphertext = encrypt(plaintext, shift);
System.out.println("加密后的结果: " + ciphertext);
} else if (mode == 2 && shift > 0) { // 解密,确保shift非负
String decryptedText = decrypt(plaintext, shift);
System.out.println("解密后的结果: " + decryptedText);
} else {
System.out.println("无效的操作选择.");
}
scanner.close();
}
// 加密函数
public static String encrypt(String text, int shift) {
StringBuilder result = new StringBuilder();
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) {
char encryptedChar = (c + shift - 'a') % 26 + 'a';
result.append(encryptedChar);
} else {
result.append(c); // 非字母字符保持不变
}
}
return result.toString();
}
// 解密函数
public static String decrypt(String text, int shift) {
return encrypt(text, 26 - shift); // 移位解密相当于反向加密
}
}
阅读全文