sql >> Base de Datos >  >> RDS >> Oracle

Replicar la decodificación Base64 de Java en PL/SQL

Eche un vistazo a CAST_TO_RAW Ddocumentación:

Deberías usar este:

base64DecodedInput:= UTL_ENCODE.base64_decode(UTL_RAW.CAST_TO_RAW(TO_CHAR(valueToDecrypt)));
DBMS_OUTPUT.PUT_LINE ( 'Base64 decoded is: ' || base64DecodedInput);

00010203040506074DBBEAB1D9972AB0

Que (formateado) debe ser igual al resultado deseado:

00 01 02 03 04 05 06 07 4D BB EA B1 D9 97 2A B0

Es bastante inútil usar NVARCHAR2 para una cadena BASE64. El objetivo principal de la codificación BASE64 es representar datos arbitrarios solo con caracteres ASCII, por lo que NVARCHAR2 no tiene sentido. Dado que BASE64 contiene solo ASCII, no tiene que preocuparse por la codificación de caracteres en CAST(... AS VARCHAR2(200)) .

Por supuesto, para el descifrado tipo de datos de cadena NVARCHAR2 podría ser muy útil.