所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
加密原理①把将要传递的信息中的字母交替排成上下两行。
②再将下面一行字母排在上面一行的后边,从而形成一段密码。
③例如:
明文:THE LONGEST DAY MUST HAVE AN END
加密:
1、把将要传递的信息中的字母交替排成上下两行。
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
2、 密文:
将下面一行字母排在上面一行的后边。
TEOGSDYUTAENN HLNETAMSHVAED
解密:
先将密文分为两行
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再按上下上下的顺序组合成一句话
明文:HE LONGEST DAY MUST HAVE AN END
扩展(1)在选择行数时可以使多行,这样对于加密强度有所提高。
(2)可以在加密之后在使用其他密码进行加密,增加强度1。
实现的部分源代码加密部分:
// 获取密钥和明文 String str_p = et_plaintext.getText().toString(); char[] str_p_char = null; { try { str_p_char = str_p.toCharArray(); } catch (Exception e) { System.out.println("Exception"); } int len=str_p_char.length; System.out.println("len:"+len); StringBuffer sb_1 = new StringBuffer(); StringBuffer sb_2 = new StringBuffer(); if(len%2==1) { for (int i = 0; i