パスワードの暗号化と復号化に AES を使用しています。私が実装しようとしているのは、クライアント側で暗号化されたパスワードを Cookie の形式で保存する必要があり、クライアントが Web サイトに再度ログインするときに、その暗号化されたパスワードをクライアント側から取得して復号化する必要があることです。クライアントから提供された暗号化されていないパスワードと照合します。私が直面している問題は、暗号化中に暗号化されたパスワードのバイト配列を Java で BASE64.encodeString() を使用して文字列に変換し、クライアント側に渡すことができるようにすることです。しかし、クライアント側から、つまり Cookie から同じ文字列を取得して復号化しようとすると、パディング エラーが発生します。
なぜそれが起こっているのですか?
暗号化のコード:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivspec);
byte[] plainBytes = Data.getBytes(UNICODE_FORMAT);
byte[] encrypted = cipher.doFinal(plainBytes);
String encryption = Base64.encodeBase64String(encrypted);
return encryption;
復号化のためのコード:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivspec);
byte[] decryptval = Base64.decodeBase64(encryptedData);
byte[] decrypted = cipher.doFinal(decryptval);
return new String(decrypted);
暗号化された文字列をjsに渡してCookieに保存しているため、エラーが発生していますか?? JS は base64 でエンコードされた文字列をいじりますか?