AES/ECB/PKCS5Paddingを使用して文字列をエンコードする必要があります。暗号化された結果(バイトが不要な新しいString(encryptedResult))がパートナーに送信されます。私のパートナーはgetBytes()を使って文字列を解読します。ここで埋め込みのために文字列経由のJava暗号化/復号化が動作しない
は、復号化方法であって、パッドを入れられた暗号を解読するとき 入力長は16の倍数でなければなりません:
public static String decrypter(final String donnees) throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
return new String(cipher.doFinal(donnees.getBytes()));
}
私の問題は、私は解読しようとしたとき、私はこのエラーを取得するということです。
バイトを直接デコードするとうまく動作します。 string.getBytes()をパディングなしで作成するにはどうすればよいですか?または他のソリューション?
私は暗号化のalgorythmを変更することはできません。また、文字列についても、パートナーに送信されたバイトではないと言えるでしょう。
このような文字列にバイトを切り替えるだけでは意味がありません。少なくとも、8ビットのエンコーディングを使用するか、Base64のようなものを使用するのが望ましいでしょう。 – Kayaman
https://stackoverflow.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa – Oleg
お互いのおかげで、問題は解決しました。私はバイトの仕組みをかなり間違って理解していました。 –