根据单词的长度加密文本的程序

时间:2016-08-14 09:51:18

标签: java encryption char string-length

我想制作一个程序来根据文本的长度加密文本。例如,如果单词是" 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

1 个答案:

答案 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

除了我们从每个字符中减去长度。

希望这有助于:)