4

Java言語でシーザー暗号暗号を作成しています。これが私のコードです

private void encCaesar() {
    tempCipher = "abcdef";
    char[] chars = tempCipher.toCharArray();
    for (int z = 0; z < tempCipher.length(); z++) {
        char c = chars[z];
        if (c >= 32 && c <= 126) {
            int x = c - 32;
            x = (x + keyCaesar) % 96;
            if (x < 0)
                x += 96;
            chars[z] = (char) (x + 32);
        }
    }
    ciphertext = chars.toString();
    etCipher.setText(ciphertext);
}

何も問題はありませんが、暗号文は405888のようなものです。これは、平文が「abcdef」でデフォルトのキーが3の場合は意味がありません。

どうしたの?

正しい :

private void encCaesar() {
    tempCipher = "abcdef";
    char[] chars = tempCipher.toCharArray();
    for (int z = 0; z < tempCipher.length(); z++) {
        char c = chars[z];
        if (c >= 32 && c <= 126) {
            int x = c - 32;
            x = (x + keyCaesar) % 96;
            if (x < 0)
                x += 96;
            chars[z] = (char) (x + 32);
        }
    }
    ciphertext = new String(chars);
    etCipher.setText(ciphertext);
}
4

1 に答える 1

3

の代わりにciphertextwithを作成する必要があります:new String(chars)chars.toString()

ciphertext = new String(chars);
于 2012-12-21T13:53:32.640 に答える