しばらくの間、Cipher クラスで暗号化しようとしていますが、まだ問題が発生しています。パディングとバイト配列のサイズに問題があります。「パディングされた暗号で復号化する場合、入力の長さは 8 の倍数でなければなりません」という例外が表示されます。これは私が書いたコードです。
public CipherClass() {
try {
cipher = Cipher.getInstance(CIPHER_ALGO);
secKey = SecretKeyFactory.getInstance(CIPHER_ALGO).generateSecret(new DESedeKeySpec(new BigInteger(KEY, 16).toByteArray()));
}
catch(GeneralSecurityException e){
e.printStackTrace();
}
}
private String encrypt(String text){
try {
cipher.init(Cipher.ENCRYPT_MODE, secKey);
Base64 encoder = new Base64();
return new String(encoder.encode(cipher.doFinal(text.getBytes())));
}
catch(GeneralSecurityException e) {
e.printStackTrace();
}
return "";
}
private String decrypt(String text) {
try {
cipher.init(Cipher.DECRYPT_MODE, secKey);
Base64 decoder = new Base64();
return new String(decoder.decode(cipher.doFinal(text.getBytes())));
}
catch (Exception e) {
e.printStackTrace();
}
return "";
}
また、Base64 の代わりに Hex を使用してみましたが、「指定された最終ブロックが適切に埋め込まれていません」という例外が発生します。
エラーを見つけるために、私を助けてください。前もって感謝します。