java小项目,凯撒加密与解密的实现

开发基于控制台的凯撒加密系统
-->凯撒加密法,就是将字母表中的每个字母向后移动2位,比如a被替换成d,b被替换成f,依次类推。字母表的最对于后三位xyz,会被替换为abc。对于拉丁字母之外的其他字符,一律不加密。

//这里只考虑了小写字母的加密算法,其他情况请读者自行添加

import java.util.Scanner;

public class KaiSaJiaMi {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out
				.println("***********************欢迎使用凯撒加密器***********************");
		System.out.println();
		System.out.print("请选择操作(1.加密、2.解密):");
		int index = sc.nextInt();

		if (1 == index) {// 加密
			System.out.print("请输入待加密的字符串:");
			String str = sc.next();

			StringBuffer newStr = new StringBuffer();// 存储加密后的字符串
			for (int i = 0; i < str.length(); i++) {
				char c = str.charAt(i);
				switch (c) {
				case 'x':
					newStr.append('a');
					break;
				case 'y':
					newStr.append('b');
					break;
				case 'z':
					newStr.append('c');
					break;
				default:
					if (!(c >= 'a' && c <= 'w')) {// 其中有一些非字母,则直接输出
						newStr.append(c);
						continue;
					}
					char newChar = (char) (c + 3);// 加密算法,每个字符后移三位
					newStr.append(newChar);
				}
			}
			System.out.println("加密后的字符串是:" + newStr.toString());
		} else if (2 == index) {// 解密
			System.out.print("请输入待解密的字符串:");
			String str = sc.next();

			char[] arr = str.toCharArray();// 将待解密的字符串转换为字符数组
			for (int i = 0; i < arr.length; i++) {
				switch (arr[i]) {
				case 'a':
					arr[i] = 'x';
					break;
				case 'b':
					arr[i] = 'y';
					break;
				case 'c':
					arr[i] = 'z';
					break;
				default:
					if (!(arr[i] >= 'd' && arr[i] <= 'z')) {// 其中有一些标点符号,则直接输出
						continue;
					}
					arr[i] -= 3;
				}
			}
			System.out.print("解密后的字符串是:");
			for (int i = 0; i < arr.length; i++) {
				System.out.print(arr[i]);
			}
		} else {
			System.out.println("sorry,请输入1或2");
		}
		sc.close();
	}
}

运行效果如图:

java小项目,凯撒加密与解密的实现_第1张图片java小项目,凯撒加密与解密的实现_第2张图片

你可能感兴趣的:(Java案例)