我想制作一个程序来根据文本的长度加密文本。例如,如果单词是" test",那么因为" test"有4个字母,它会将单词中的每个字母移到第4个下一个字母。这将使"测试"到" xiwx"。我已经完成了我的计划的一部分。这是它:
public static void main(String[] args){
string.toLowerCase();
int charPos = 0;
int length = 0;
for(int i = 0; i < string.length(); i++){
charPos = 0;
length = 0;
while(!(string.charAt(i) == ' ')){
length = charPos;
charPos++;
}
length--;
for(int j = 0; j<=length; j++){
char cha =string.charAt(i);
//HERE IS WHERE THE CHAR ADDING WILL HAPPEN
}
i++;
}
}//end
答案 0 :(得分:0)
通过使用一个循环,有一种更简单的方法来实现这种类型的加密。
<强>加密强>
String str = "test"; // normal string
String encryptedStr = ""; // start empty then add characters
for (char ch : str.toCharArray()) // loop through each character in str
encryptedStr += (char) (ch + str.length()); // need to cast addition to char
System.out.println("Encrypted String: " + encryptedStr); // output encrypted string
所以我的想法是使用length()方法来获取字符串的长度,因为这是你要添加到每个字符的内容。因为每个字符都有一个ASCII整数值,我们可以对它们执行数学运算(所以在这种情况下,为每个字符添加长度)。然后,由于结果将是一个整数,我们必须在结果中添加(char)强制转换以将其转换回字符。然后我们可以将这个字符连接到空字符串。如果我们对原始字符串中的每个字符执行此操作(通过使用for循环并将字符串转换为char数组),我们最终将获得加密字符串。
同样的想法适用于解密:
String str = "xiwx"; // encrypted string
String decryptedStr = ""; // start empty then add characters
for (char ch : str.toCharArray()) // loop through each character in str
decryptedStr += (char) (ch - str.length()); // need to cast subtraction to char
System.out.println("Decrypted String: " + decryptedStr); // output decrypted string
除了我们从每个字符中减去长度。
希望这有助于:)