Oracle en las funciones de cifrado y descifrado

Oracle cifrado interna de los datos, puede ser tan simple de usar DBMS_CRYPTO, el efecto es bueno, pero también más cómodo de usar, por lo que hoy específicamente para aprender sobre el uso de este paquete. Antes de su uso, prestar atención a dos cosas:
1, el paquete DBMS_CRYPTO sólo 10g y 10g si la versión anterior, el paquete de uso DBMS_OBFUSCATION_TOOLKIT;
2, DBMS_CRYPTO predeterminado único usuario SYSDBA debe llevar a cabo, por lo que cualquier otro usuario necesita SYSDBA empoderamiento.
      conceder a ejecutar en DBMS_CRYPTO al usuario;

Si desea obtener más información acerca del uso de paquete DBMS_CRYPTO, puede hacer referencia al documento oficial: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_crypto.htm 

Un generador de valor aleatorio

paquete de uso DBMS_CRYPTO puede tener tres funciones ( randominteger , RandomBytes , RandomNumber ) para generar un valor aleatorio simple. El uso de la función de generación de números aleatorios para generar una clave de cifrado aleatoria.

El SQL> SELECT DBMS_CRYPTO.RandomInteger de la doble; - la generación de un número entero (positivo o negativo) 
randominteger 
------------- 
 -284,171,810 
el SQL> SELECT DBMS_CRYPTO.RandomBytes (6). De la doble; - generar 6 Bytes (Nota que el retorno no es el byte RAW) 
DBMS_CRYPTO.RANDOMBYTES (6) 
------------------------------ 
FFEE2CB53DB4 
SQL > SELECT DBMS_CRYPTO.RandomNumber de Dual - número de generación (número positivo) 
RandomNumber 
------------ 
6,6453693840

En segundo lugar, las funciones de cifrado y descifrado

1, una función de cifrar cifrado

El cifran la función (el src del EN RAW, 
                  Typ IN una PLS_INTEGER, 
                  la tecla de en RAW, 
                  el IV en RAW el DEFAULT NULL) 
    RETURN RAW; 
    explicar: 
    1, el src: necesidad de encriptar el contenido, pero la necesidad de convertir el formato RAW, no directamente el formato VARCHAR2 cifrada.. uso UTL_RAW.CAST_TO_RAW o UTL_I18N.STRING_TO_RAW función de convertir el tipo de varchar2 prima de tipo 
    2, típ: tipo de cifrado, definido por DBMS_CRYPTO, puede consultar empaquetar DBMS_CRYPTO sección Declare 
    3, clave: se requiere clave es decir cifrado para descifrar para conocer la clave original, 
    4, IV: opción de bloque de contraseña, por lo general seleccionado Por omisión, el valor predeterminado es nulo

2, la función de descifrado descifrado

DECRYPT FUNCIÓN (Src en RAW, 
                 typ EN PLS_INTEGER, 
                 tecla IN RAW, 
                 iv EN RAW DEFAULT NULL) 
    RETURN RAW;
    Explicar: 
    1, src: necesidad de descifrar el contenido. Después de descifrar el formato RAW utiliza UTL_RAW.CAST_TO_VARCHAR2 o UTL_I18N.RAW_TO_CHAR función de convertir el tipo de varchar2 prima de tipo 
    2, típ: tipo de cifrado, definido por DBMS_CRYPTO, DBMS_CRYPTO sección Declare pueden consultar empaquetar 
    3, clave: cifrado clave es decir, , para el descifrado lo que necesita saber la llave original 
    4, IV: opción de bloque de contraseña, por lo general seleccionado Por omisión, el valor predeterminado es nulo

3, tipo de encriptación

 

En tercer lugar, ejemplos

|| input_string);
  
    

                        dbms_output.put_line ( '> ========= Begin Test Cifrar =========');
    -加密
     encrypted_raw: = dbms_crypto.Encrypt (src => raw_input , 
					Typ => DBMS_CRYPTO.DES3_CBC_PKCS5 , 
					clave => raw_key ); 

    dbms_output.put_line ( '> cifrada valor hexadecimal:' || RAWTOHEX (UTL_RAW.CAST_TO_RAW (encrypted_raw)));
    dbms_output.put_line ( '> valor cifrado varchar2:' || UTL_RAW.CAST_TO_VARCHAR2 (encrypted_raw));
    -解密
     decrypted_raw: = dbms_crypto.Decrypt (src => encrypted_raw , 
					Typ => DBMS_CRYPTO.DES3_CBC_PKCS5 , 
					clave =>    - El RAW descifrado convierte en Cadena
     decrypted_string: = UTL_RAW.CAST_TO_VARCHAR2 (decrypted_raw); 

    DBMS_OUTPUT.PUT_LINE ( '> Salida descifrado de la secuencia:' || decrypted_string); 

    SI ENTONCES input_string = decrypted_string
        DBMS_OUTPUT.PUT_LINE ( '> Cadena el DES encriptación descifrado exitoso y '); 
   al final si; 
el fin; 
/ 

resultados de ejecutar la secuencia de comandos: 
> Bytes ========= ========= la Obtener clave de 
longitud> cadena de clave: 24 
> cadena de clave: Luo Noticias subida T ?? ╭ Sai venta I ~ Wabiao? 
> la cadena de entrada: exigen un contenido encriptado 
> cifrar ========= ========= comenzar la prueba 
> el valor hexadecimal codificado: 374132424133453633303945433530364534414334443943303346343735303643464630393330313436454441443930 
> valor varchar2 encriptado: Z + f0 espíritus Qi Tao caucho F M no les gusta ??
           
  
Descripción:
1, se puede observar por dbms_crypto.randombytes (24) generados por la distorsión de 24 
2, se debe proporcionar cifrado de clave cuando el descifrado, el cifrado se puede utilizar cuando se utiliza un complejo de cadena fija.

En cuarto lugar, el cifrado de costumbre y funciones de descifrado  https://www.cnblogs.com/zhijiancanxue/p/12507828.html

1, el cifrado

CREATE OR REPLACE FUNCTION F_ENCRYPT_DATA(NUMBER_IN IN VARCHAR2,
                                          SECRETKEY IN VARCHAR2) RETURN RAW IS
  NUMBER_IN_RAW RAW(128) := UTL_I18N.STRING_TO_RAW(NUMBER_IN, 'AL32UTF8');
  KEY_NUMBER    VARCHAR2(32) := SECRETKEY;
  KEY_RAW       RAW(128) := UTL_RAW.CAST_FROM_NUMBER(KEY_NUMBER);
  ENCRYPTED_RAW RAW(128);
BEGIN
  ENCRYPTED_RAW := DBMS_CRYPTO.ENCRYPT(SRC => NUMBER_IN_RAW,
                                       TYP => DBMS_CRYPTO.DES_CBC_PKCS5,
                                       KEY => KEY_RAW);
  RETURN ENCRYPTED_RAW;
END;

2、解密

CREATE OR REPLACE FUNCTION F_DECRYPT_DATA(ENCRYPTED_RAW IN RAW,
                                          SECRETKEY     IN VARCHAR2)
  RETURN VARCHAR2 IS
  DECRYPTED_RAW RAW(128);
  KEY_NUMBER    VARCHAR2(32) := SECRETKEY;
  KEY_RAW       RAW(128) := UTL_RAW.CAST_FROM_NUMBER(KEY_NUMBER);
BEGIN
  DECRYPTED_RAW := DBMS_CRYPTO.DECRYPT(SRC => ENCRYPTED_RAW,
                                       TYP => DBMS_CRYPTO.DES_CBC_PKCS5,
                                       KEY => KEY_RAW);
  RETURN UTL_I18N.RAW_TO_CHAR(DECRYPTED_RAW, 'AL32UTF8');
END;

  

转自:https://www.cnblogs.com/pejsidney/articles/7066032.htmlhttps://www.cnblogs.com/ZTPX/p/10762621.html

Supongo que te gusta

Origin www.cnblogs.com/shujk/p/12541391.html
Recomendado
Clasificación