問題タブ [badpaddingexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2344 参照

android - Android cipher.doFinal は、アプリを再度開いた後に復号化しようとすると、BadPaddingException を取得しました

質問は長くなるかもしれませんが、詳しく説明します。

これは私のような問題があるデモです。

Android アプリがあり、ユーザーがパスワードを暗号化して SharedPreferences に保存し、SharedPreferences からパスワードを読み取って解読できる機能を追加したいと考えています。指紋が登録されている場合にのみ使用でき、これらのパスワードを取得するための検証方法として有効な指紋を使用できます。

保管時:

  1. ユーザー入力パスワード
  2. AndroidKeyStore によって生成された SecretKey によって暗号化モードの暗号を作成します
  1. FingerprintManager は暗号 (Cipher A) を有効にし、実際の暗号化暗号 (Cipher B) を取得します。
  1. FingerprintManager からサポートされている暗号 (Cipher B) によるパスワードの暗号化
  2. 暗号化されたパスワードと暗号 iv を SharedPreferences に保存する

読んだとき:

  1. 暗号 iv を読み取り、復号化モードの暗号 (Cipher C) を作成します。
  1. 有効なフィンガープリントを取得し、実際の復号化暗号 (Cipher D) を取得します
  1. 暗号化されたパスワードを読み取り、実際の復号化暗号 (Cipher D) で復号化します

私の初期化方法:

アプリを閉じなくてもOK!!!

ただし、プロセスを強制終了して再起動すると、cipher.doFinal() を実行すると、decryptPin() メソッドで BadPaddingException が発生しました。

この問題を解決するのを手伝ってくれる人はいますか? SecretKey が原因ですか?ありがとうございます!!!

0 投票する
1 に答える
2511 参照

java - BadPaddingException: Java のバージョンが異なるため、最終ブロックが適切にパディングされていない場合

以下の手法を使用してデータファイルを暗号化するクライアント側にJava 8をインストールしました

そして今、私は以下のコードに従ってJava 7がインストールされているサーバー側で復号化しています。

そうすることで、以下のエラーが表示されます

両側に同じ Java バージョン (1.7) がインストールされている場合、同じコードが正常に動作します。どちらの側でもJavaバージョンを変更せずにこれを修正するにはどうすればよいですか