恺撒密码
在密码学中,恺撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
例如,下面是凯撒密码的偏移量k=3的情况
初始字母顺序: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 凯撒变换后 : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
请编写代码实现恺撒密码。
输入:
偏移量K
待加密的字符串
输出:
加密后的字符串。注意只需用对大小写字母进行变换,其它字符原样输出
import java.io.*;
public class KaiSaMiMa {
//传过来要加密的字符串和偏移量
public static String jiaMi(String s,int k){
String result = "";
for(int i=0;i<s.length();i++){
char c = s.charAt(i);
if(c >= 'a' && c <= 'z'){//判断是小写字母
c += k%26;//移动key%26位,以防k>26
if(c < 'a')//向左超界
c += 26;
if(c > 'z')//向右超界
c -= 26;
}else if(c >= 'A' && c <= 'Z'){//判断是大写字母
c += k%26;
if(c < 'A')
c += 26;
if(c > 'Z')
c -= 26;
}
result += c;
}
return result;
}
public static void main(String[] args) throws IOException {
System.out.println("请输入偏移量和要加密的字符串:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//输入字符串
int k = Integer.parseInt(br.readLine());//接收第一行的偏移量
String str = br.readLine();//接收第二行的要加密的字符串
String c = jiaMi(str,k);//调用jiaMi进行加密
System.out.println(k);//打印
System.out.print(c);
}
}
运行结果如下:
请输入偏移量和要加密的字符串:
5
My name is avanry/
5
Rd sfrj nx fafswd/