java凯撒密码实现----完美版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码:
package ning.hao;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Cryptology {
char ciphertext[];//密文
int key;
char plaintext[];//明文
StringBuffer plaintextStr;
StringBuffer ciphertextStr;
final int max=500;
Cryptology(){
key=0;
plaintextStr=new StringBuffer("");
ciphertextStr=new StringBuffer("");
}
int setKey(){
System.out.println("请输入一个Caesar密钥");
Scanner sc=new Scanner(System.in);
try{
key=sc.nextInt()%26;
}
catch(Exception e){
System.out.println("需要输入整数!");
}
return key;
}
void getPlaintext(){//获得明文
plaintext=new char[max];
for(int j=0;j plaintext[j]='@'; } int i=0; char ch=' '; BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入明文"); try { ch=(char) bf.read();//获得字符 while(ch!='\r'&&ch!='\n'){ if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'||ch==' '||ch==','||ch=='.'||ch=='!'){ plaintext[i]=ch; i++; } else{ System.out.println("输入不支持!!"); break; } try{ ch=(char) bf.read(); } catch(IOException e1){ } } } catch(IOException e){} } void encryption(){//加密 int temp=0; ciphertext=new char[max]; for(int j=0;j ciphertext[j]='@'; } for(int i=0;i if(plaintext[i]!='@'){ temp=plaintext[i]+key; if(plaintext[i]==' '||plaintext[i]==','||plaintext[i]=='.'||plaintext[i]=='!'){ ciphertext[i]=(char) (plaintext[i]); } if(plaintext[i]>='a'&&plaintext[i]<='z'){ if(temp>122) ciphertext[i]=(char) (97+temp-123); else{ ciphertext[i]=(char)temp; } } if(plaintext[i]>='A'&&plaintext[i]<='Z'){ if((plaintext[i]+key)>90) ciphertext[i]=(char)(65+temp-91); else{ ciphertext[i]=(char)temp; } } ciphertextStr.append(ciphertext[i]); } else{ break; } } } void deciphering(){//解密 char c=' '; int temp=0; for(int i=0;i temp=ciphertext[i]-key; if(ciphertext[i]!='@'){ if(plaintext[i]==' '||plaintext[i]==','||plaintext[i]=='.'||plaintext[i]=='!'){ c=(char)(ciphertext[i]); } if(ciphertext[i]>=97&&ciphertext[i]<=122){ c=(char)(temp); if(temp<97){ c=(char)(26+temp); } } if(ciphertext[i]>=65&&ciphertext[i]<=90){ c=(char)(temp); if(temp<65){ c=(char)(26+temp); } } plaintextStr.append(c); }