我终于完成了插件,并开始着手另一个项目。该项目是一个简单的软件,可以在给定加密密钥和字符串本身的情况下加密字符串。所以我写了那个,它似乎工作正常,但我不知道如何解密它。我曾经有一个带有加密字母表的数组,但我想出了一种在加密函数中不使用它的方法,并且在解密时也应该有一种方法可以不使用它。
我的加密功能:
public static String e(String toEncrypt, int encKey) {
encKey %= ALPHABET.length;
toEncrypt = toEncrypt.toLowerCase();
char[] TEChar = toEncrypt.toCharArray();
for (int i = 0; i < toEncrypt.length(); i++) {
for (int j = 0; j < ALPHABET.length; j++) {
if (TEChar[i] == '`') {
TEChar[i] = '_';
}
else if (TEChar[i] == ALPHABET[j]) {
TEChar[i] = ALPHABET[(j + encKey) % ALPHABET.length];
break;
}
}
}
toEncrypt = String.valueOf(TEChar) + "`" + encKey;
return toEncrypt;
}
ALPHABET (数组,我意识到它包含的不仅仅是字母表。):
char[] ALPHABET = {'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', ' ', '1',
'2', '3', '4', '5', '6', '7', '8', '9', '0', ',', '.', ';', ':', '[', ']', '{',
'}', '?'};
我没有创建一个新数组来仅包含偏移字符,而是通过简单的添加和使用余数运算符来做到这一点。我尝试使用减法和同样的方法,但它不起作用,因为我需要它来回绕到 26。不知何故,我觉得解决方案是显而易见的。