こんにちは、このコード (コード 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);
}