zoukankan      html  css  js  c++  java
  • 凯撒密码--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步得到我们的加密字符串。
    此贴终结~

    --------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
  • 相关阅读:
    动态添加LInk的分析
    ASP.NET内置对象-网页转向的4中方法
    网页生命周期-动态添加控件
    网页生命周期-控件事件执行顺序
    网页生命周期-PageLoad事件
    HyperLink 控件
    ListBox控件
    OptionMenu选项菜单
    Menubutton按钮弹出菜单
    Menu-右键弹出菜单
  • 原文地址:https://www.cnblogs.com/zjw-blog/p/13592444.html
Copyright © 2011-2022 走看看