Programacion para todos
Este Blog a sido creado para aquellas personas que estan comenzando en el campo de la programacion
Programacion para todos
martes, 13 de septiembre de 2011
Desencriptacion(Ejecucion del Encriptacion y Desencriptacion)
En la imagen se puede ver claramente la ejecucion del procedimiento de almacenado encriptar llamado mediante la consola SQL-Plus de Oracle con el comando call encriptar(10,'pepe').
Luego para desencriptar es un poco mas complicado ya que debemos crear un cursor mediante el codigo
variable cursor refcursor;
Luego para desencriptar es un poco mas complicado ya que debemos crear un cursor mediante el codigo
variable cursor refcursor;
este codigo tambien es mediante Sql/Plus,luego se debe llamar al procedimiento de almacenado y pasarle el cursor previamente creado y un id para que vaya a la tabla de pruebas y busque a la tupla que tiene ese id y desencriptar el campo nombre de dicha tupla.El codigo si no se logra ver es:
call desencriptar (:cursor,10);
luego que se haya cargado el cursor con los datos necesarios lo que falta es imprimirlo:
print cursor;
Con esto concluye todo este pequeño tutorial para encriptar en base de datos oracle.
Con esto concluye todo este pequeño tutorial para encriptar en base de datos oracle.
Esta demas mencionar que hay metodos ya precargados en oracle para la encriptacion de campos en las tablas,pero es bueno expandir nuestros propios horizontes,ya que la finalidad del INGENIERO NO ES COPIAR, ES CREAR!!
Desencriptacion(Procedimiento de Almacenado)
A continuacion se muestra la desencriptacion del metodo que previamente mostramos de ejemplo.
create or replace
PROCEDURE desencriptar(cursor out sys_refcursor,idd NUMBER) AS
clave VARCHAR(50);
ClaveEncriptada VARCHAR(50);
Longitud NUMBER;
aux NUMBER;
BEGIN
SELECT nombre INTO clave FROM prueba where id=idd;
Longitud := LENGTH(clave);
aux:=0;
FOR I IN 1..Longitud LOOP
ClaveEncriptada:=CONCAT(ClaveEncriptada,CHR(SUBSTR(UPPER(clave),I+aux,2)));
aux:=aux+1;
END LOOP;
open cursor for select ClaveEncriptada as Usuario from dual;
END desencriptar;
create or replace
PROCEDURE desencriptar(cursor out sys_refcursor,idd NUMBER) AS
clave VARCHAR(50);
ClaveEncriptada VARCHAR(50);
Longitud NUMBER;
aux NUMBER;
BEGIN
SELECT nombre INTO clave FROM prueba where id=idd;
Longitud := LENGTH(clave);
aux:=0;
FOR I IN 1..Longitud LOOP
ClaveEncriptada:=CONCAT(ClaveEncriptada,CHR(SUBSTR(UPPER(clave),I+aux,2)));
aux:=aux+1;
END LOOP;
open cursor for select ClaveEncriptada as Usuario from dual;
END desencriptar;
Metodo de Encriptacion para Base de Datos en Oracle (Parte 2)
-------------------------------------------------------------------------------------------------------------
create or replace
PROCEDURE encriptar(id in NUMBER, nombre in VARCHAR) AS
ClaveEncriptada VARCHAR(50);
Clave VARCHAR(50);
Longitud NUMBER;
BEGIN
Longitud := LENGTH(nombre);
FOR I IN 1..Longitud LOOP
ClaveEncriptada:=CONCAT(ClaveEncriptada,ASCII(SUBSTR(UPPER(nombre),I,1)));
END LOOP;
INSERT into prueba values(id,ClaveEncriptada);
END encriptar;
-------------------------------------------------------------------------------------------------------------
En este codigo se logra encriptar un campo de una tabla de pruebas creada con solo dos atributos, el id y un nombre,el metodo de encriptacion utiliza en codigo ascii para encriptar el parametro nombre luego de convertir todos sus capos a mayuscula.
create or replace
PROCEDURE encriptar(id in NUMBER, nombre in VARCHAR) AS
ClaveEncriptada VARCHAR(50);
Clave VARCHAR(50);
Longitud NUMBER;
BEGIN
Longitud := LENGTH(nombre);
FOR I IN 1..Longitud LOOP
ClaveEncriptada:=CONCAT(ClaveEncriptada,ASCII(SUBSTR(UPPER(nombre),I,1)));
END LOOP;
INSERT into prueba values(id,ClaveEncriptada);
END encriptar;
-------------------------------------------------------------------------------------------------------------
En este codigo se logra encriptar un campo de una tabla de pruebas creada con solo dos atributos, el id y un nombre,el metodo de encriptacion utiliza en codigo ascii para encriptar el parametro nombre luego de convertir todos sus capos a mayuscula.
Metodo de Encriptacion para Base de Datos en Oracle (Parte 1)
Para este metodo de encriptacion personalizado con oracle es necesario aclarar algunas cosas para poder comprender de lleno al codigo.
Vamos a utilizar una función de oracle llamada SUBSTR, lo que hace esta funcion es devolver una subcadena de char de n caracteres a partir de la posicion m.
Si m es positivo, empieza a contar desde el principio.
Si m es negativo, empieza a contar desde el final.
Si no ponemos n, devuelve hasta el final de la cadena.
SUBSTR(char, m [, n])
Si ejecutamos:
SELECT SUBSTR('PEPE PEREZ',6) FROM DUAL;
Devuelve PEREZ
Si ejecutamos:
SELECT SUBSTR('PEPE PEREZ',6,3) FROM DUAL;
Devuelve PER
En el primer valor('1er valor',6,3) le pasamos a la funcion una cadena de la cual vamos a sacar una subcadena.
Con el segundo valor ('PEPE PEREZ',2do valor,3) le estamos diciendo a la funcion desde que posicion de la cadena va a sacar la subcadena,o sea que va comenzar a tomar desde la P de PEREZ ya que el espacio que existe entre PEPE y PEREZ cuenta como un caracter.
Por ultimo con el tercer valor('PEPE PEREZ',6,3er VALOR)le decimos a la funcion cuantos espacios quiero que me tome para la subcadena,comenzando obviamente desde el segundo valor,por ejemplo,el segundo valor es 6,asi que la subcadena comenzaria en P de PEREZ y tomaria 3 campos despues de esa incluyendo a la P,el resultado sera PER, este tercer valor puede ser anotado o no,depende de la necesidad del programador
Vamos a utilizar una función de oracle llamada SUBSTR, lo que hace esta funcion es devolver una subcadena de char de n caracteres a partir de la posicion m.
Si m es positivo, empieza a contar desde el principio.
Si m es negativo, empieza a contar desde el final.
Si no ponemos n, devuelve hasta el final de la cadena.
SUBSTR(char, m [, n])
Si ejecutamos:
SELECT SUBSTR('PEPE PEREZ',6) FROM DUAL;
Devuelve PEREZ
Si ejecutamos:
SELECT SUBSTR('PEPE PEREZ',6,3) FROM DUAL;
Devuelve PER
En el primer valor('1er valor',6,3) le pasamos a la funcion una cadena de la cual vamos a sacar una subcadena.
Con el segundo valor ('PEPE PEREZ',2do valor,3) le estamos diciendo a la funcion desde que posicion de la cadena va a sacar la subcadena,o sea que va comenzar a tomar desde la P de PEREZ ya que el espacio que existe entre PEPE y PEREZ cuenta como un caracter.
Por ultimo con el tercer valor('PEPE PEREZ',6,3er VALOR)le decimos a la funcion cuantos espacios quiero que me tome para la subcadena,comenzando obviamente desde el segundo valor,por ejemplo,el segundo valor es 6,asi que la subcadena comenzaria en P de PEREZ y tomaria 3 campos despues de esa incluyendo a la P,el resultado sera PER, este tercer valor puede ser anotado o no,depende de la necesidad del programador
Tambien puedes ingresar a la pagina http://ora.u440.com/ para mayor informacion sobre funciones ORACLE
Suscribirse a:
Entradas (Atom)