凯撒加密器
1、功能要求
開(kāi)發(fā)基于控制臺(tái)的凱撒加密系統(tǒng)。具體要求如下:
(1)根據(jù)用戶(hù)的選擇從控制臺(tái)待加密或解密的字符串。如圖-2和圖-3所示。
(2)根據(jù)凱撒加密法,對(duì)字符串進(jìn)行加密或解密。
(3)加密或解密完成后,把結(jié)果輸出到控制臺(tái)。如圖-4和圖-5所示。
圖-2 操作選擇界面
?
圖-3 輸入字符串界面
圖-4 加密后的界面
圖-5 解密后的界面
?
2、類(lèi)的設(shè)計(jì)
該系統(tǒng)中必須包括三個(gè)類(lèi)。
輸入臺(tái)控制類(lèi)(Swither)
Encryption(字符串加密類(lèi))
Decryption(字符串解密類(lèi))
3、具體要求及推薦實(shí)現(xiàn)步驟
?????? 1、創(chuàng)建控制臺(tái)控制類(lèi)Switcher,用于和操作者交互。
?????? 2、開(kāi)發(fā)加密類(lèi)Encryption,使用凱撒加密法對(duì)字符串加密,并把加密后的結(jié)果返回給Switcher。
?????? 3、開(kāi)發(fā)解密類(lèi)Dncryption,使用凱撒加密法對(duì)字符串解密,并把解密后的結(jié)果返回給Switcher。
?????? 凱撒加密法,就是將字母表中的每個(gè)字母向后移動(dòng)3位,比如a被替換成d,b被替換成f,以此類(lèi)推。字母表的最后三位xyz,會(huì)被替換為abc。比如hello,加密之后是khoor.對(duì)于拉丁字母之外的其他字符,一律不加密。
import java.util.Scanner;
publicclass Encryption {
?? /**
?? ?* 字符串加密類(lèi)
?? ?* 使用凱撒加密法對(duì)字符串加密,并把加密后的結(jié)果返回給Switcher
?? ?*/
?? publicvoid?show(){
????? Scanner input=new Scanner(System.in);
????? System.out.print("請(qǐng)輸入待加密的字符串:");
????? String a=input.nextLine();
????? int[] b=newint[a.length()];??//創(chuàng)建數(shù)組保存輸入的字符
????? int i;?//定義循環(huán)初值
????? for(i=0;i<a.length();i++){
????? if((a.charAt(i)>='a'&&a.charAt(i)<='z')||(a.charAt(i)>='A'&&a.charAt(i)<='Z')){
?????????? //判斷是否是合適的字符
?????????? b[i]=(int)a.charAt(i)+3;//轉(zhuǎn)換數(shù)字
??????? }else{
?????????? b[i]=(int)a.charAt(i);//如果是不合的字符,直接輸出
??????? }
??????? System.out.print((char)b[i]);//轉(zhuǎn)換成字符輸出
????? }????
?? }
?? ?
}
import java.util.Scanner;
publicclass Decryption {
?? /**
?? ?* 字符串解密類(lèi)
?? ?* 使用凱撒加密法對(duì)字符串解密,并把解密后的結(jié)果返回給Switcher
?? ?*/
?? publicvoid showac(){
????? Scanner input=new Scanner(System.in);
????? intk=3;??//向后移三位
????? System.out.print("請(qǐng)輸入待解密的字符串:");
????? String a=input.nextLine();
????? int[] b=newint[a.length()];
????? int i;
????? for(i=0;i<a.length();i++){
????? if((a.charAt(i)>='a'&&a.charAt(i)<='z')||(a.charAt(i)>='A'&&a.charAt(i)<='Z')){
?????????? b[i]=(int)a.charAt(i)-3;
??????? }else{
?????????? b[i]=(int)a.charAt(i);
??????? }
??????? System.out.print((char)b[i]);
????? }????
?? }
}
import java.util.Scanner;
publicclass Swither {
?? /**輸入臺(tái)控制類(lèi)
?? ?* @author????*凱撒加密法,就是將字母表中的每個(gè)字母向后移動(dòng)3位,比如a被替換成d,
?? ?* b被替換成f,以此類(lèi)推。字母表的最后三位xyz,會(huì)被替換為abc。比
?? ?* 如hello,加密之后是khoor.對(duì)于拉丁字母之外的其他字符,一律不加密。
?? ?*/
?? publicstaticvoid main(String[] args) {
????? //TODO Auto-generated method stub
????? Scanner input=new Scanner(System.in);
????? Encryption enc=new Encryption();
????? Decryption dec=new Decryption();
????? System.out.println("************歡迎使用凱撒加密法*******************\n\n");
????? System.out.print("請(qǐng)選擇操作(1.加密,2.解密):");
????? int num=input.nextInt();
????? switch(num){
??????? case 1:
?????????? enc.show(); //調(diào)用加密方法
?????????? break;
??????? case 2:
?????????? dec.showac(); //調(diào)用解密方法
?????????? break;
??????? default:
?????????? System.out.println("錯(cuò)誤有誤,請(qǐng)重新輸入:");
?????????? num=input.nextInt();
?????????? break;
????? }
?? }
}
總結(jié)
- 上一篇: 用ATL创建COM组件详细解说
- 下一篇: Saleae 逻辑分析仪SX24M8使用