作者在 2008-03-11 11:06:55 发布以下内容
上个星期天去书店逛了逛,看到一本叫《密码中的秘密》的书,随便翻了翻,发现里面介绍的密码知识很有趣,于是对密码有了一点兴趣,呵呵,好玩呗。今天公司暂时没事,就写了一个简单的加密程序。
首先介绍一下什么是栅栏密码:
有兴趣的朋友可以自己编写解码的程序,这里就不写了。对密码和Java有兴趣的朋友可以一起交流下哦!
首先介绍一下什么是栅栏密码:
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第i个字连起来,形成一段无规律的话。
一般比较常见的是2栏的棚栏密码。
比如明文:THERE IS A CIPHER
去掉空格后变为:THEREISACIPHER
两个一组,得到:TH ER EI SA CI PH ER
先取出第一个字母:TEESCPE
再取出第二个字母:HRIAIHR
连在一起就是:TEESCPEHRIAIHR
这样就得到我们需要的密码了!
因此,这个程序只是一个简单的2栏栅栏密码加密器:
package
src;import
java.io.*;public
class Password { public static void main(String args[]) throws IOException { int l = 0;String original =
"";StringBuffer str1 =
new StringBuffer();StringBuffer str2 =
new StringBuffer();StringBuffer str =
new StringBuffer();System.
out.print("Input the message: ");BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));original = br.readLine();
StringBuffer sb =
new StringBuffer();String[] s = original.split(
" "); for (int a = 0; a < s.length; a++) {sb.append(s[a]);
}
original = sb.toString();
char[] c = original.toCharArray();l = original.length();
for (int i = 0; i < l; i++) {str1.append(c[i++]);
if (i == l && l % 2 != 0) break; elsestr2.append(c[i]);
}
str.append(str1);
str.append(str2);
System.
out.println("Encrypted message: " + str);}
}
这段程序先是要求用户输入需要加密的内容,然后去掉内容中的空格(如果有的话),然后分成按要求的两段,最后把这两段连接在一起并输出。例如:输入this is a war, 那么你就得到:tiiaahsswr。呵呵,比较有意思吧!有兴趣的朋友可以自己编写解码的程序,这里就不写了。对密码和Java有兴趣的朋友可以一起交流下哦!
注意:贴出来后发现程序中有些字符又被系统忽略掉了,例如我定义的original变成了riginal。估计还有一些问题吧,希望能尽快解决这个问题。