凯撒密码/滚动凯撒密码 Java实现

public class demo02 {

    static public String[] SminLetter={"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"};
    static public String[] SmaxLetter={"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"};


    public static void main(String[] args) {
        String test="abc dz";
        encryption(test);

        String test1="bcd ea";
        cryption(test1);

        String test2="i lo";
        scrollEncryption(test2);

        String test3="j os";
        scrollCryption(test3);
    }

    public static int isIn(String[] arr,char temp1){
        String temp=String.valueOf(temp1);
        int result = -1;
        for (int j = 0; j < arr.length; j++) {
            if (arr[j].equals(temp)) {
                result = j;
                break;
            }
        }
        return result;
    }

    //加密
    public static  void encryption(String test){
        StringBuilder sb=new StringBuilder(test);
        for (int i = 0; i < test.length(); i++) {
            if (isIn(SminLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SminLetter[(isIn(SminLetter,test.charAt(i))+1)%26]);
            }else if (isIn(SmaxLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SmaxLetter[(isIn(SmaxLetter,test.charAt(i))+1)%26]);
            }else if (test.charAt(i)==' '){
                continue;
            }
        }
        System.out.println(sb);
    }

    //解密
    public static void cryption(String test){
        StringBuilder sb=new StringBuilder(test);
        for (int i = 0; i < test.length(); i++) {
            if (isIn(SminLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SminLetter[(isIn(SminLetter,test.charAt(i))+25)%26]);
            }else if (isIn(SmaxLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SmaxLetter[(isIn(SmaxLetter,test.charAt(i))+25)%26]);
            }else if (test.charAt(i)==' '){
                continue;
            }
        }
        System.out.println(sb);
    }

    //滚动加密
    public static  void scrollEncryption(String test){
        StringBuilder sb=new StringBuilder(test);
        for (int i = 0; i < test.length(); i++) {
            if (isIn(SminLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SminLetter[(isIn(SminLetter,test.charAt(i))+1+i)%26]);
            }else if (isIn(SmaxLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SmaxLetter[(isIn(SmaxLetter,test.charAt(i))+1+i)%26]);
            }else if (test.charAt(i)==' '){
                continue;
            }
        }
        System.out.println(sb);
    }

    //滚动解密
    public static  void scrollCryption(String test){
        StringBuilder sb=new StringBuilder(test);
        for (int i = test.length()-1; i >=0; i--) {
            if (isIn(SminLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SminLetter[(isIn(SminLetter,test.charAt(i))+25-i)%26]);
            }else if (isIn(SmaxLetter,test.charAt(i))!=-1){
                sb=sb.replace(i,i+1,SmaxLetter[(isIn(SmaxLetter,test.charAt(i))+25-i)%26]);
            }else if (test.charAt(i)==' '){
                continue;
            }
        }
        System.out.println(sb);
    }
}
posted @ 2022-03-08 19:56  jamespai  阅读(172)  评论(0)    收藏  举报