凱撒密碼--java實現


關於凱撒密碼的介紹我就不多說了,感興趣的可以看什么是凱撒密碼?,我主要說的是java如何實現。

我發現網上有寫java加密解密的,寫的時候發現只需要一個轉換函數就可以了,可以作為加密用,也可以用作解密用。
我們要解密的字符串是R uxen hxd.

**
 * 凱撒密碼
 */
public class CaesarCipher {

    public static void main(String[] args) {
        //需要轉換的字符串
        String str = "R uxen hxd.";
        for (int i=0;i<26;i++){
            System.out.println(i+" "+caesarSwitch(str,i));
        }
    }

    /**
     *  凱撒轉換
     * @param str 需要轉換的字符串
     * @param step 偏移量
     * @return  轉換后的字符串
     */
    public static String caesarSwitch(String str, int step){
        //字符串轉數組
        char[] chars = str.toCharArray();
        //計算右移的步數
        step = step%26;
        if(step<0){
            step = step + 26;
        }
        //開始變換
        for (int i=0;i<chars.length;i++){
            char c = chars[i];
            //小寫
            if (c>='a'&&c<='z'){
                c = (char) (c + step);
                if (c>'z')
                    c -= 26;
            }
            //大寫
            if (c>='A'&&c<='Z'){
                c = (char) (c + step);
                if (c>'Z')
                    c -= 26;
            }
            //把轉換后的字符再給原來數組
            chars[i] = c;
        }
        return String.copyValueOf(chars);
    }

}

結果:

0 M pszi csy.
1 N qtaj dtz.
2 O rubk eua.
3 P svcl fvb.
4 Q twdm gwc.
5 R uxen hxd.
6 S vyfo iye.
7 T wzgp jzf.
8 U xahq kag.
9 V ybir lbh.
10 W zcjs mci.
11 X adkt ndj.
12 Y belu oek.
13 Z cfmv pfl.
14 A dgnw qgm.
15 B ehox rhn.
16 C fipy sio.
17 D gjqz tjp.
18 E hkra ukq.
19 F ilsb vlr.
20 G jmtc wms.
21 H knud xnt.
22 I love you.
23 J mpwf zpv.
24 K nqxg aqw.
25 L oryh brx.

經過窮舉我們發現I love you.是有意義的字符串,原字符串R uxen hxd.是經過右移4步或左移動22步得到我們的加密字符串。
此貼終結~


免責聲明!

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



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