(4)简单置换
2016-03-28 10:31
99 查看
置换技术
![](http://img.blog.csdn.net/20160328102915305)
密钥即为置换和逆置换。
置换为:[2,7,4,6,1,3,5](2表示当前位置用第2个字母置换,其他类推)
逆置换为:[5,1,6,3,7,4,2]
运行结果:
密文:aeravilmdgy
逆置换:6 1 8 5 2 3 11 10 7 4 9
明文:iamveryglad
密钥即为置换和逆置换。
置换为:[2,7,4,6,1,3,5](2表示当前位置用第2个字母置换,其他类推)
逆置换为:[5,1,6,3,7,4,2]
import java.util.ArrayList; import java.util.List; /** * 置换加密技术,密钥为置换和逆置换 * 通过根据置换表改变明文字符串的排列顺序 * @author Angela */ public class Displace { /** * 得到逆置换 * @param K 置换表 * @return 逆置换表 */ public static int[] reverseK(int[] K){ int len=K.length; int[] key=new int[len]; List<Integer> list=new ArrayList<Integer>(); for(int k: K){ list.add(k); } for(int i=0;i<len;i++){ key[i]=list.indexOf(i+1)+1;//List第一个下标是0 } return key; } /**打印密钥**/ public static void printK(int[] K){ for(int i=0;i<K.length;i++) System.out.print(K[i]+" "); System.out.println(); } /** * 根据密钥,改变字符串的排列顺序, * 可以对明文进行加密(K为置换表), * 或对密文进行解密(K为逆置换表) * @param str 字符串 * @param keys 密钥 * @return */ public static String displace(String str,int[] keys){ str=str.replaceAll(" ","").toLowerCase();//去除空格,并转换成小写 StringBuilder sb=new StringBuilder(); for(int key: keys){ sb.append(str.charAt(key-1));//字符串第一个下标是0 } return sb.toString(); } /**测试**/ public static void main(String args[]){ //String P="number2"; String P="I am very glad"; //2表示当前位置用第2个字母置换,其他类推 //int[] K={2,7,4,6,1,3,5}; int[] K={2,5,6,10,4,1,9,3,11,8,7}; String C=displace(P,K); System.out.println("密文:"+C); int[] rkey=reverseK(K); System.out.print("逆置换:"); printK(rkey); System.out.println("明文:"+displace(C,rkey)); } }
运行结果:
密文:aeravilmdgy
逆置换:6 1 8 5 2 3 11 10 7 4 9
明文:iamveryglad
相关文章推荐
- OFBIZ:启动之StartupLoader
- hdu 5493 Queue 树状数组第K大或者二分
- 把所有的小图标一起做成雪碧图吧 请用gulp-css-spriter.
- JavaScript数据绑定databind框架knockout
- HBASE启动/Shell解析
- 什么XSS攻击?PHP防止XSS攻击函数
- 图灵3月书讯
- 正则表达式
- springmvc 异常org.springframework.web.servlet.DispatcherServlet noHandlerFound
- 高中知识sin回顾:对不起老师!!!
- Android DVM
- Jetty之WebAppContext
- 计算机中的工程思想
- 框架学习之道:PE框架简介
- 关于维度信息维护和字典表的一些看法
- 2013
- Webform和MVC,为什么MVC更好一些?(转)
- 往List集合中的Map对象追加数据
- 获取窗口句柄
- 3月全球域名商新增注册量25强:万网夺冠 增速加快