Добрый день, сейчас я работаю с API в JAVA и Quarkus, в нем я получаю с помощью метода GET параметр в URL-адресе, который зашифрован с помощью AES, проблема в том, что шифрование включает в себя специальные символы, такие как + / который теперь читает URL-адрес, который служба принимает в качестве пути.
Это мой код для шифрования AES, методы шифрования и дешифрования, которые я использую для шифрования:
Вышеупомянутое вызывает у меня ошибку при раскрытии моего сервиса, например, через kubernete и вход, поэтому я хочу знать, есть ли другой вариант, я знаю, что кодирование и декодирование в base64 вариант, но я бы хотел использовать AES
Добрый день, сейчас я работаю с API в JAVA и Quarkus, в нем я получаю с помощью метода GET параметр в URL-адресе, который зашифрован с помощью AES, проблема в том, что шифрование включает в себя специальные символы, такие как + / который теперь читает URL-адрес, который служба принимает в качестве пути. Это мой код для шифрования AES, методы шифрования и дешифрования, которые я использую для шифрования:[code]package com.tmve.util; import lombok.NoArgsConstructor; import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.*; import java.security.spec.InvalidKeySpecException; import java.security.spec.KeySpec; import java.util.Arrays; import java.util.Base64;
@NoArgsConstructor public class EncryptUtil { private static byte[] initializationVector = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; private static byte[] key; private static SecretKeySpec secretKey;
Cipher decipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); SecretKeySpec myKey = new SecretKeySpec(desKeyData, "DESede"); IvParameterSpec ivspec = new IvParameterSpec(Base64.getDecoder().decode(DEFAULT_IV)); decipher.init(Cipher.ENCRYPT_MODE, myKey, ivspec); byte[] plainText = decipher.doFinal(cipherText.getBytes()); return Base64.getEncoder().encodeToString(plainText); } private void setKey(String myKey) { MessageDigest sha = null; try { key = myKey.getBytes("UTF-8"); sha = MessageDigest.getInstance("SHA-256"); key = sha.digest(key); key = Arrays.copyOf(key, 16); secretKey = new SecretKeySpec(key, "AES"); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { e.printStackTrace(); } } public IvParameterSpec generateIv() { byte[] iv = new byte[16]; new SecureRandom().nextBytes(iv); return new IvParameterSpec(iv); } } [/code] А иногда и цифры такие: [code]WKqxB/qNPQUz6wRbHZrpBQ== [/code] Проблема заключается в том, что мне нужно передать это в URL-адрес, как показано ниже: [code]https://10.162.128.94:30000/userProfile/v3.6/users/WKqxB/qNPQUz6wRbHZrpBQ== [/code] Вышеупомянутое вызывает у меня ошибку при раскрытии моего сервиса, например, через kubernete и вход, поэтому я хочу знать, есть ли другой вариант, я знаю, что кодирование и декодирование в base64 вариант, но я бы хотел использовать AES