java凱撒密碼


凱撒密碼:

1.程序設計思想:

首先要獲取加密內容和密鑰;

加密和解密中按照字符錯n位的規則,構造加密和解密的函數;

最后直接調用函數,並輸出操作過后的結果。

關鍵點是操作字符的移位。

2.程序流程圖:

3.源程序:

package 課后作業;

import java.util.Scanner;

public class CaesarCipher {

    public String path;//公有變量path為要操作的函數

    public String estr="";//公有變量estr為操作過后的字符串

    public char c;//公有變量c是要操作的path提取后的字符

public static void main(String[] args) {

// TODO Auto-generated method stub

   CaesarCipher c=new CaesarCipher();//建立新的對象

   System.out.println("*凱撒密碼*");

   System.out.println("1.加密");//要執行的操作

   System.out.println("2.解密");

   System.out.println("你要進行的操作:");

   int num;

   Scanner scanner=new Scanner(System.in);//輸入要執行的操作num

   num=scanner.nextInt();

       System.out.println("情輸入你要進行操作的字符串");//輸入操作的字符串

       c.path=scanner.next();

   if(num==1)

   {

   c.jiami(c.path, 3);//調用加密函數

   System.out.println("加密過后的字符串為:"+c.estr);

   }

   else

   {

   c.jiemi(c.path, 3);//調用解密函數

   System.out.println("解密過后的內容為:"+c.estr);

   }

}

public void jiami(String key,int n)//加密

{

for(int i=0;i<key.length();i++)

{

c=key.charAt(i);//取出字符串的每個字符

if(c>='A'&&c<='Z')//當字符在"A""Z"之間的時候

{

if(c+n%26<='Z')//當提取的字符在Z之前的n位時

{

   estr+=(char)(c+n%26);

}

else

{

estr+=(char)('A'+((n-('Z'-c)-1)%26));//孤立出來的n個字符

}

}

else if(c>='a'&&c<='z')

{

if(c+n%26<='z')//當提取的字符在z之前的n位時

{

   estr+=(char)(c+n%26);

}

else

{

estr+=(char)('a'+((n-('z'-c)-1)%26));//孤立出來的n個字符

}

}

else if(c>='0'&&c<='9')

{

if(c+n%10<='9')

{

   estr+=(char)(c+n%10);//當提取的字符在9之前的n位時

}

else

{

estr+=(char)('0'+((n-('9'-c)-1)%10));//孤立出來的n個字符

}

}

else

{

estr+=c;

}

}

 

}

public void jiemi(String key,int n)//解密

{

for(int i=0;i<key.length();i++)

{

c=key.charAt(i);//取出字符串的每個字符

if(c>='A'&&c<='Z')//當字符在"A""Z"之間的時候

{

if(c-n%26>='A')//當提取的字符在A之前的n個時

{

   estr+=(char)(c-n%26);

}

else

{

estr+=(char)('Z'-((n-(c-'A')-1)%26));//操作孤立出來的n個字符

}

}

else if(c>='a'&&c<='z')

{

if(c-n%26>='a')//當提取的字符在a之前的n個時

{

   estr+=(char)(c-n%26);

}

else

{

estr+=(char)('z'-((n-(c-'a')-1)%26));//操作孤立出來的n個字符

}

}

else if(c>='0'&&c<='9')

{

if(c-n%10>='0')//當提取的字符在0之前的n個時

{

   estr+=(char)(c-n%10);

}

else

{

estr+=(char)('9'-((n-(c-'0')-1)%10));//操作孤立出來的n個字符

}

}

else

{

estr+=c;

}

}

}   

}

4.程序結果截圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM