实验项目名称:基本加解密算法的实现
1、实验要求
(1)实现一个凯撒密码算法(Caesar cipher),要求输入一个数字作为秘钥K,对输入的任意字符串(暂时只考虑英文字符和数字)可以输出凯撒密码算法加密的密文。
(2)扩展题(选做):查资料了解维吉尼亚密码并进行实现,要求输入一个字符串作为秘钥K,对输入的任意字符串(暂时只考虑英文字符和数字)可以输出维吉尼亚密码算法加密的密文。
2、实现方法
在Eclipse中用Java语言实现上述结果
3、实验过程及结果
(1)实验代码如下:
package prj1;
import java.util.Scanner;
public class CODE1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[A 加密][J 解密],请选择一个");
Scanner c=new Scanner(System.in);// 创建Scanner对象
String s1=c.nextLine();//获取本行的字符串
if(s1.equalsIgnoreCase("A")) {
//判断变量s1与A是否相等,忽略大小
System.out.println("请输入明文:");
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println("请输入密钥:");
Scanner sc1=new Scanner(System.in);
int key=sc1.nextInt();//将下一输入项转换成int类型
Encryption(s,key);//调用Encryption方法
}else if(s1.equalsIgnoreCase("J")) {
System.out.println("请输入密文:");
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println("请输入密钥:");
Scanner sc1=new Scanner(System.in);
int key=sc1.nextInt();
Decrypt(s,key);//调用Encryption方法
}
}
public static void Decrypt(String str, int n) {
// TODO Auto-generated method stub
//解密
int k=Integer.parseInt("-"+n);
String string="";
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
if(c>='a'&&c<='z')//如果字符串中的某个字符是小写字母
{
c+=k%26;//移动key%26位
if(c<'a')
c+=26;//向左超界
if(c>'z')
c-=26;//向右超界
}else if(c>='A'&&c<='Z')//如果字符串中的某个字符是大写字母
{
c+=k%26;//移动key%26位
if(c&