2016-04-10 28 views
0

我一直在使用polybius方块对我的程序进行加密。虽然我已经得到了这个工作,但需要说的是,当一个单词被加密时,它需要为不止一次出现的字母选择替代数字。JAVA - 使用数组进行加密

例如'E'在加密时需要用15或61表示,并且它必须交替。我正在努力寻找解决方案,任何反馈都会很棒。

这里是目前我的源代码:

public class Encryption { 
private static char polybiusSquare[][] = { { 'A', 'B', 'C', 'D', 'E', 'F' }, 
              { 'G', 'H', 'I', 'K', 'L', 'M' }, 
              { 'N', 'O', 'P', 'Q', 'R', 'S' }, 
              { 'T', 'U', 'V', 'W', 'X', 'Y' }, 
              { 'Z', 'E', 'T', 'A', 'O', 'N' }, 
              { 'E', 'T', 'A', 'O', 'J', ' ' } }; 

public static String encryptMessage(String message) { 
    String encipheredMessage = ""; 
    for (int x = 0; x < message.length(); x++) { 
     encipheredMessage = encipheredMessage + encryptCharacter(message.charAt(x)); 
    } 
    return encipheredMessage; 
} 

public static String encryptCharacter(char currentChar) { 
    String returnGridRef = ""; 
    for (int x = 0; x < 6; x++) { 
     for (int y = 0; y < 6; y++) { 
      if (currentChar == polybiusSquare[x][y]) { 
       returnGridRef = Integer.toString(x + 1) + Integer.toString(y + 1); 
      } 
     } 
    } 
    if (returnGridRef.equals("")) 
     return "00"; 
    else 
     return returnGridRef; 
} 
+0

问题和代码的质量比我在几天内从新用户看到的要好得多。 – MikeC

回答

0

维持保持该下一组要被用于的重复字符值的数据结构;它只保存重复字符的值。初始化它。

在'encryptCharacter'中检查参数是否是这些字符之一,如果是,则使用数据结构中的值并使用下一次使用的值(仅限该字符)更新它。

鉴于你的Q和代码的质量,我期待你可以从这里拿走它。

+0

感谢很多生病的小提琴手。 – Kallendo96

+0

我一直在看这个,但我仍在挣扎。我仍然对Java很陌生。你有这样的例子吗? – Kallendo96

+0

下面是[Java中的地图数据结构]示例(https://examples.javacodegeeks.com/java-basics/java-map-example/)。我希望你有一本很好的Java书或者你正在学习或者从中学习的网站。如果您尝试通过在SO或其他论坛上发布问题来学习,这将是一条漫长而艰难的道路。 – MikeC

相关问题