(1)Caesar密码算法的Java实现

来源:互联网 发布:极智seo团队 编辑:程序博客网 时间:2024/05/14 23:03

利用Caesar密码算法对英文明文进行加密解密:
**一般化的恺撒加密算法为: C = E(k, p) = (p + k) mod 26
一般化的恺撒解密算法为: p = D(k, C) = (C - k) mod 26**
根据凯撒密码的思想,编写相应的Java代码:

/** * 凯撒密码 * 英文字母26种方式 * @author Angela *//** * 一般化的恺撒加密算法为: C = E(k, p) = (p + k) mod 26 * 一般化的恺撒解密算法为: p = D(k, C) = (C - k) mod 26    */public class Caesar {      /**     * 对单个字母进行加密     * @param ch 字母     * @param n 密钥     * @return 加密后的字母     */    public static char encrypt(char ch,int n){        int unicode;        int c=ch-'a';        if(c+n>'z') unicode=c+n-26;        else unicode=c+n;        return (char)(unicode%26+'a');    }    /**     * 对明文进行加密     * @param str 明文字符串     * @param n 密钥     * @return  对明文加密后的密文     */    public static String encrypt(String str,int n){        char[] ch=str.toCharArray();        StringBuilder sb=new StringBuilder();        for(char c: ch){            sb.append(encrypt(c,n));        }        return sb.toString();    }      /**     * 将加密后的字母解密     * @param ch 加密后的字母     * @param n 密钥     * @return 解密后的字母     */    public static char decrypt(char ch,int n){        int unicode;         int c=ch-'a';        if(c-n<'a') unicode=c-n+26;        else unicode=c-n;        return (char)(unicode%26+'a');    }    /**     * 将密文解密     * @param str 密文     * @param n 密钥     * @return 解密后的明文     */    public static String decrypt(String str,int n){        char[] ch=str.toCharArray();        StringBuilder sb=new StringBuilder();        for(char c: ch){            sb.append(decrypt(c,n));        }        return sb.toString();    }    public static void main(String args[]){        String str="OGGV OG CHVGT VJG VQIC RCTVA";        String[] words=str.toLowerCase().split(" ");        for(int i=0;i<26;i++){            System.out.print(i+" ");            for(String word: words){                System.out.print(decrypt(word,i)+" ");            }            System.out.println();        }        str="meet me after the toga party";        String[] ws=str.split(" ");        System.out.print("验证:");        for(String w: ws){            System.out.print(encrypt(w,2)+" ");        }    }    }

运行程序,结果如下:
0 oggv og chvgt vjg vqic rctva
1 nffu nf bgufs uif uphb qbsuz
2 meet me after the toga party
3 ldds ld zesdq sgd snfz ozqsx
4 kccr kc ydrcp rfc rmey nyprw
5 jbbq jb xcqbo qeb qldx mxoqv
6 iaap ia wbpan pda pkcw lwnpu
7 hzzo hz vaozm ocz ojbv kvmot
8 gyyn gy uznyl nby niau julns
9 fxxm fx tymxk max mhzt itkmr
10 ewwl ew sxlwj lzw lgys hsjlq
11 dvvk dv rwkvi kyv kfxr grikp
12 cuuj cu qvjuh jxu jewq fqhjo
13 btti bt puitg iwt idvp epgin
14 assh as othsf hvs hcuo dofhm
15 zrrg zr nsgre gur gbtn cnegl
16 yqqf yq mrfqd ftq fasm bmdfk
17 xppe xp lqepc esp ezrl alcej
18 wood wo kpdob dro dyqk zkbdi
19 vnnc vn jocna cqn cxpj yjach
20 ummb um inbmz bpm bwoi xizbg
21 tlla tl hmaly aol avnh whyaf
22 skkz sk glzkx znk zumg vgxze
23 rjjy rj fkyjw ymj ytlf ufwyd
24 qiix qi ejxiv xli xske tevxc
25 phhw ph diwhu wkh wrjd sduwb
验证:oggv og chvgt vjg vqic rctva

0 0
原创粉丝点击