-4

如何通过使用两个字符串
来加密和解密文本以获得更多说明

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

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

4

2 回答 2

4

由于这可能是一个家庭作业,这里有一些关于如何完成它的提示:

  • 您需要修复语法:字符串文字放在双引号中,不带逗号
  • 要“编码”一个字符,使用 找到它在order字符串中的位置indexOf,然后在调用random.charAt.
  • 要“解码”一个字符,请以相反的顺序执行相同的操作:调用indexOfrandom然后将索引传递给order.charAt

这是一个用于编码单个字符并将其解码回来的骨架代码(演示):

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

此代码不完整 - 如果正在查找的字符存在于order字符串中,或​​者当 theorderrandomstring 没有恰好覆盖整个字母表一次时,它将失败。

注意:原始替换密码的这种实现与安全性无关:如果有的话,它会假装对本质上以纯文本形式存在的事物进行编码,从而降低系统的安全性。

于 2013-10-31T16:20:04.117 回答
1

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

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

别的

使用charAt(int pos)此处其他一些回复中描述的方法。

于 2013-10-31T16:19:34.387 回答