問題タブ [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.
java - javax.crypto.BadPaddingException: メッセージがモジュラスより大きい
RMI ネットワークを介した暗号化の復号化を示す必要があるプロジェクトに取り組んでいます。これにはRSAシステムを使用しています。復号化すると、コードで次のエラーが発生します。
これは私の復号化コードです:
暗号化中に cipher.update(byte[] data) を使用してみました。String データがあり、暗号化中に string.getByte() を使用してバイト配列に変換します。update メソッドを使用すると、データをモジュラスより大きくできないという IllegalBlockException のエラーが発生します。
これで私を助けてください。コードにバグが見つかりません。
java - javax.crypto.BadPaddingException: 最終ブロックが適切にパディングされていない場合
KeyGenerator
クラスを使用して AES キーを作成しています。次に、この AES キーを使用して暗号化と復号化を行い、Web サービスの応答で暗号化テキスト/プレーン テキストを返す Web サービスを公開しました。
暗号化は完全に正常に機能していますが、復号化のために( SOAP UIjavax.crypto.BadPaddingException: Given final block not properly padded
から) Web サービスを呼び出すと、断続的に例外が発生します。
私は16進数(org.apache.commons.codec.binary.Hex
クラスを使用)のエンコード/デコードを使用して、バイトを変換していますString
。
このコードをテストし、問題なく動作するスタンドアロン クラスを作成しました。
この問題を解決する方法について何か考えはありますか?
java - BadPaddingException: Android 復号化ブロックでパッド ブロックが破損しています
この質問が何度か寄せられていることは知っていますが、私のコードではうまくいかないようです。
復号化時に例外が発生します:
「javax.crypto.BadPaddingException: パッド ブロックが壊れています」
私のコードは次のとおりです。
dataDecryption() 関数で cipher.doFinal() を呼び出すと、例外がスローされます。さらに、SecureRandom を呼び出すと、次の警告が表示されました 。
私は RandomAccessFile と FileOutputStream を使用してファイルを読み書きしているので、バイト配列を直接操作しています。
私はこの他の質問を見て、それが言うように私のコードを修正しましたが、それでも動作しません:
ところで、あるデバイスで暗号化し、別のデバイスで復号化しています。
これは私のスタックトレースです:
よろしくお願いします。
pdfbox - PDFBoxで復号化するときのBadPaddingException
過去に、次のコードを使用して PDFBox を使用して PDF を復号化しようとしました。
( decrypt() の Javadocでは代わりにopenProtection()doc.decrypt(password)
を使用する必要があると記載されているため、使用しないことに注意してください。ただし、非推奨ではない理由はわかりません)。
とにかく、これはかなり長い間うまくいきました。ただし、最近、次の例外が発生しているようです。
この問題を解決するにはどうすればよいですか?
java - 入力文字列が原因で RSA 復号化が失敗する
次の問題があります。コードには、単純な文字列を暗号化/復号化するための 2 つの関数があります。
それで:
文字列「someString」を関数に渡す必要があります。
関数は「[B@61decc8c」doEncryption("someString")
を返します
ここで、この文字列を URL に埋め込む必要があり、サーバー側のコードはそこから取得する必要があります。
これまでのところすべて良いですが、関数を呼び出すと
次の例外を除いてdoDecryption("[B@61decc8c")
悲鳴:
これを回避する方法はありますか? クライアント側とサーバー側の間で文字列を渡す必要があるのは、それらが異なるドメインにある可能性があるためです。文字列が実際に .Net ロジックから生成され、Java サーバー側に送信されることは言うまでもありません。文字列への暗号化は正常に機能します...復号化を修正するにはどうすればよいですか。
完全なクラス コードは次のとおりです。
}
java - Java での RSA BadPaddingException - JRE での Android 復号化での暗号化
他にもいくつかの質問が見つかりましたが、これの原因の説明が見つかりませんでした。データを暗号化し、ファイルに保存し、ファイルを再度ロードして復号化する関数をJavaで作成しました。これは非対称暗号化であるため、テスト目的でコードに直接格納されている公開鍵と秘密鍵があります。
問題は、関数が Android と Java RE 7 がインストールされた Windows マシンで機能するため、暗号化自体の違いのようです。しかし、JRE7 システムで Android からのデータを同じキーと機能を使用して暗号化することはできず、結果として「不適切なパディング例外」が発生します。
テスト目的で、単一のデータ ブロックを使用します。暗号化/復号化は各システムで機能するため、問題は鍵ではないと確信しています。最終バージョンはバイナリ データをエンコードおよびデコードするため、バイトを使用するだけで、文字列のさまざまな文字セットについて心配する必要はありません。理由がわかったら、PHP のデータを pureRSA でデコードします。