如何在JAVA中使用两个字符串进行加密

时间:2013-10-31 16:09:42

标签: java security encryption

如何使用两个字符串加密和解密文本 更多澄清

String order =  {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z};
String random = {q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m};

当我加密任何单词时,例如:abcdefg;
当我加密它时,它将显示为qwerty;

当我解密时,他会做相反的事 如果他打招呼,解密的文本将是pcssi

我努力使用两个字符串的索引,但我找不到任何结果

2 个答案:

答案 0 :(得分:4)

由于这可能是一个功课,这里有一些关于如何完成它的提示:

  • 您需要修复语法:字符串文字用双引号括起来没有逗号
  • 要对某个字符进行“编码”,请使用orderindexOf字符串中找到它的位置,然后在random.charAt的调用中使用该索引。
  • 要“解码”某个字符,请按相反的顺序执行相同操作:在indexOf上调用random,然后将索引传递给order.charAt

这是一个用于对单个字符进行编码并对其进行解码的骨架代码(demo):

char orig = 'x';
char conv = random.charAt(order.indexOf(orig));
char back = order.charAt(random.indexOf(conv));

此代码不完整 - 如果正在查找的字符在order字符串中,或者order或{时,它将会失败{1}}字符串不会覆盖整个字母表一次。

注意:原始substitution cipher的这种实现与安全性无关:如果有的话,它会假装编码基本上保留为纯文本的内容,从而使您的系统更少安全。

答案 1 :(得分:1)

如果您没有被迫使用字符串

这里你最好的选择是使用AbstractMap.SimpleEntry<K,V>。这里的目标是将一个字母“绑定”到另一个字母,允许您找到key(例如a),并检索value(加密的一个,在这种情况下) q)。当您需要解密时,您可以通过一些编码从同一个表中找到属于您的key的{​​{1}}。假设您使用1对1加密,就像您的示例中一样,您将能够相对轻松地完成此操作。

<强>否则

使用此处其他一些回复中所述的value方法。