简单栅栏密码加密器

作者在 2008-03-11 11:06:55 发布以下内容
        上个星期天去书店逛了逛,看到一本叫《密码中的秘密》的书,随便翻了翻,发现里面介绍的密码知识很有趣,于是对密码有了一点兴趣,呵呵,好玩呗。今天公司暂时没事,就写了一个简单的加密程序。
        首先介绍一下什么是栅栏密码:
       

    所谓栅栏密码,就是把要加密的明文分成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;

else

str2.append(c[i]);

}

str.append(str1);

str.append(str2);

System.out.println("Encrypted message: " + str);

}

}

    这段程序先是要求用户输入需要加密的内容,然后去掉内容中的空格(如果有的话),然后分成按要求的两段,最后把这两段连接在一起并输出。例如:输入this is a war, 那么你就得到:tiiaahsswr。呵呵,比较有意思吧!
    有兴趣的朋友可以自己编写解码的程序,这里就不写了。对密码和Java有兴趣的朋友可以一起交流下哦!

    注意:贴出来后发现程序中有些字符又被系统忽略掉了,例如我定义的original变成了riginal。估计还有一些问题吧,希望能尽快解决这个问题。

Java | 阅读 4496 次
文章评论,共2条
静夜思
2008-03-11 17:53
1
刚刚解决这个问题了,以后会逐步完善
hwoarangzk(作者)
2008-03-12 09:29
2
已经解决了,谢谢!
游客请输入验证码