(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
- (1)Caesar密码算法的Java实现
- java实现caesar加解密算法
- Caesar算法的3种实现
- python实现的Caesar加解密算法
- 四种古典密码的C++实现(4)-----Caesar密码
- 实现Caesar密码(加法密码)加解密
- 实现Caesar密码(加法密码)加解密
- caesar密码
- Caesar密码
- Caesar密码
- Caesar密码
- Caesar 密码
- JAVA加密解密之凯撒加密(Caesar cipher)算法
- Python HAIL CAESAR (凯撒密码) 1
- Caesar 密码(POJ NO.1976)
- C++调用有道词典API实现Caesar密码的加密解密
- 聊胜于无 Java之Caesar与Vigenere实现
- 聊胜于无 Java之Caesar与Vigenere实现
- 0xC0000005: Access Violation
- Android studio通过选择不同的Build Variant执行不同的groovy代码
- 0-1背包问题动态规划
- 参数是数组的引用变量,判断数组是否为空
- leetcode 25. Reverse Nodes in k-Group
- (1)Caesar密码算法的Java实现
- 【面试题】:25匹马比赛问题
- Glide加载和显示图片
- LEETCODE 83
- Bitmap的操作
- Python 10进制与任意进制之间相互转换(最大为62进制)
- iOS学习历程图
- 《C++ Primer Plus》——编程练习答案(2)
- JDK的环境变量设置