码迷,mamicode.com
首页 > 其他好文 > 详细

凯撒加密

时间:2017-10-27 01:50:31      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:字符串转换   else   ascii表   程序代码   ringbuf   for   port   array   images   

古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:

技术分享

解题思路:

键盘盘输入字符串,把字符串转换成数组,在数组中把根据ASCII表+3,在利用StringBuffer转换回字符串,解码原理相同。

程序框图:

技术分享程序

程序代码:

import java.util.Scanner;
class jiami
{
String b;
public jiami(String a)
{
b=a;
int m=b.length();
char [] ch = b.toCharArray();
for(int i=0;i<m;i++)
{
if((ch[i]>87&&ch[i]<91)||(ch[i]>118&&ch[i]<123))
ch[i]=(char) (ch[i]-23);
else
ch[i]=(char) ((ch[i])+3);
}
StringBuffer arr = new StringBuffer();

for(int i=0;i<m;i++)

{

arr.append(ch[i]);
}

String newstr = arr.toString();
System.out.println("加密后的密码是:"+newstr);
}
}
class jiemi
{
String b;
public jiemi(String a)
{
b=a;
int m=b.length();
char [] ch = b.toCharArray();
for(int i=0;i<m;i++)
{
if((ch[i]>97&&ch[i]<99)||(ch[i]>87&&ch[i]<91))
ch[i]=(char) (ch[i]+23);
ch[i]=(char) (ch[i]-3);
}
StringBuffer arr = new StringBuffer();

for(int i=0;i<m;i++)

{

arr.append(ch[i]);

}

String newstr = arr.toString();
System.out.println("解密后的密码是:"+newstr);
}
}
public class homework1 {
public static void main(String args[]){
Scanner cin=new Scanner(System.in);
System.out.println("请选择加密,还是解密,加密按1,解密按2");
int m=cin.nextInt();
if(m==1)
{
String a;
System.out.println("请输入密码");
a=cin.next();
jiami jia=new jiami(a);
}
else if(m==2)
{
String a;
System.out.println("请输入密码");
a=cin.next();
jiemi jie=new jiemi(a);
}
else System.out.println("输入错误");

}

}

截图:

技术分享

 

凯撒加密

标签:字符串转换   else   ascii表   程序代码   ringbuf   for   port   array   images   

原文地址:http://www.cnblogs.com/miria-486/p/7739779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!