1

こんにちは、このコード (コード 1) の下に別のコード (コード 2) の効果を逆にする必要がありますが、どちらのコードでも正しく機能しません。誰かがこれで私を助けることができますか? :)

コード 2 は、テキストを取得し、各文字を取得し、それを数値で乗算し、モジュラス 29 で残りを見つけます。この新しい番号が暗号化された文字になります。次に、これをコード 1 で逆にしたいと思います。

私のアルファベット = a, b, c, ..., æ, ø, å = 29 文字

因数 1、2、3 の例「あなた」は次のようになります。

(25*1)%29 = 25

(15*2)%29 = 1

(21*3)%29 = 5

「やえ」

次に、それを逆にするために、新しい文字を取り、それを係数で割り、小数点のない数値かどうかを確認します。そうでない場合は、文字値に 29 を追加して最初からやり直します。

1、2、および 3 を使用した例

「やえ」

(25/1)%29 = 25

(1/2)%29 = 0,5 に 29 を足す

(30/2)%29 = 15

(5/3)%29 = 1,66 に 29 を足す

(34/3)%29 = 11,33 に 29 を足す

(63/3)%29 = 21

"あなた"

コード 1

String initialString = yourString.getText().toString();
        char[] chars = initialString.toCharArray();
        for (int i = 1; i <= chars.length; i++) {
            if (chars[i-1] == ' '){
                continue;   
            }
            C = Integer.valueOf(faktorA);
            if ( i%2 ==0 ) C = Integer.valueOf(faktorB);
            if ( i%3 ==0 ) C = Integer.valueOf(faktorE);

            chars[i-1] = characters.get((characters.indexOf(chars[i-1]) / C)%29);

            if(chars[i-1]%1 != 0){
                chars[i-1] = (char) (chars[i-1] * C + 29);
                chars[i-1] = characters.get((characters.indexOf(chars[i-1]) / C)%29);
            }
        }

コード 2

    String initialString = yourString.getText().toString();
        char[] chars = initialString.toCharArray();
        for (int i = 1; i <= chars.length; i++) {
            if (chars[i-1] == ' '){
                continue;   
            }
            C = Integer.valueOf(faktorA);
            if ( i%2 ==0 ) C = Integer.valueOf(faktorB);
            if ( i%3 ==0 ) C = Integer.valueOf(faktorE);

            chars[i-1] = characters.get((characters.indexOf(chars[i-1]) * C)%29);
        }
4

0 に答える 0