如何使用两个字符串加密和解密文本 更多澄清
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
我努力使用两个字符串的索引,但我找不到任何结果
答案 0 :(得分:4)
由于这可能是一个功课,这里有一些关于如何完成它的提示:
order
在indexOf
字符串中找到它的位置,然后在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
方法。