問題タブ [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.
android - Android cipher.doFinal は、アプリを再度開いた後に復号化しようとすると、BadPaddingException を取得しました
質問は長くなるかもしれませんが、詳しく説明します。
これは私のような問題があるデモです。
Android アプリがあり、ユーザーがパスワードを暗号化して SharedPreferences に保存し、SharedPreferences からパスワードを読み取って解読できる機能を追加したいと考えています。指紋が登録されている場合にのみ使用でき、これらのパスワードを取得するための検証方法として有効な指紋を使用できます。
保管時:
- ユーザー入力パスワード
- AndroidKeyStore によって生成された SecretKey によって暗号化モードの暗号を作成します
- FingerprintManager は暗号 (Cipher A) を有効にし、実際の暗号化暗号 (Cipher B) を取得します。
- FingerprintManager からサポートされている暗号 (Cipher B) によるパスワードの暗号化
- 暗号化されたパスワードと暗号 iv を SharedPreferences に保存する
読んだとき:
- 暗号 iv を読み取り、復号化モードの暗号 (Cipher C) を作成します。
- 有効なフィンガープリントを取得し、実際の復号化暗号 (Cipher D) を取得します
- 暗号化されたパスワードを読み取り、実際の復号化暗号 (Cipher D) で復号化します
私の初期化方法:
アプリを閉じなくてもOK!!!
ただし、プロセスを強制終了して再起動すると、cipher.doFinal() を実行すると、decryptPin() メソッドで BadPaddingException が発生しました。
この問題を解決するのを手伝ってくれる人はいますか? SecretKey が原因ですか?ありがとうございます!!!
java - BadPaddingException: Java のバージョンが異なるため、最終ブロックが適切にパディングされていない場合
以下の手法を使用してデータファイルを暗号化するクライアント側にJava 8をインストールしました
そして今、私は以下のコードに従ってJava 7がインストールされているサーバー側で復号化しています。
そうすることで、以下のエラーが表示されます
両側に同じ Java バージョン (1.7) がインストールされている場合、同じコードが正常に動作します。どちらの側でもJavaバージョンを変更せずにこれを修正するにはどうすればよいですか