質問: hirabun.getBytes("UTF-8"); }catch (Exception e) { } int num0; for(int num=0;num<3;num++) { for(num0=1;num0=1 ;counter0--) { textbytes[counter0]=(byte)(textbytes[counter0] ^(textbytes[counter0-1])); } } try{ ret=new String(textbytes,"UTF-8");//このretに復号化された平文が入る、はず。 } catch (Exception ex) { } } ``` これらのコードで hogehuga を暗号化すると、 CWYIY2V7GmE= となり、これを復号化したところ、 }ehuge と出ました。中括弧は元の文字にはありませんし、 そこから左側は化け文字になっています。 最後の文字も、平文ではaですが、復号化するとe になりました。 ### 補足情報(FW/ツールのバージョンなど) android studio 3.1使用 宜しくお願い致します。
回答: `System.out.println`で変数を出力すると分かりますが暗号化するときは変数:`num0`が1~6なのに、 復号する時は変数:`counter0`が7~1まで回ります。 修正するだけでしたら、復号部分を以下コードに変更してくださいな。 ``` for(counter0=textbytelen-2;counter0>=1 ;counter0--) { textbytes[counter0]=(byte)(textbytes[counter0] ^(textbytes[counter0-1])); } ``` こちらの質問Androidでの暗号化と復号ができませんとAndroid Keystoreを使って秘匿情報を保持するを参考にライブラリを使用することをお勧めします。あと変数はできるだけ直前で宣言してくださいな。