You are on page 1of 3

En esta Ocasin Les Mostrare un Algoritmo de Encriptacion y desencriptacion en SQL Server 2008

http://www.taringa.net/posts/info/15443226/Algoritmo-de-Encriptacion-y-Desencriptacion-de-SQLServer2008.html
1.- Primero que nada hay que Abrir Sql Server 2008 y darle en nueva consulta

2.-Crear una base de datos y una tabla de prueba

Como se puede apreciar en la tabla de usuario la contrasea es un varbinary de 500, y la razon es porque cuando el
algoritmo encripta genera muchos caracteres y se debe evitar que la contrasea generada por la encriptacion sea mayor
que el espacio en el campo
3.- crear la Funcin del algoritmo de encriptacion

en la funcin del Algoritmo se puede apreciar que recibe una variable(la contrasea de algn formulario) de tamao
pequeo, y despus se declara otra variable con un tamao ms grande para almacenar el valor de la contrasea ya
encriptado.
en la encriptacion se utiliza una palabra reservada de SQL server para encriptar, que recibe 2 parmetros, una clave para
encriptar la contrasea y la palabra a encriptar
ENCRYPTBYPASSPHRASE('clave',@clave)
hay que tomar en cuenta que la 'clave' es una palabra que se utilizara en el algoritmo de desencriptacion y por lo tanto no
se debe de olvidar
4.- crear la Funcin del algoritmo de desencriptacion
Aqu se hace el proceso inverso de la encriptacion, se obtiene la contrasea ya encriptada de la columna pass con el
parmetro de la variable de tamao grande y se desencripta con otra palabra reservada de SQL server para desencriptar
DECRYPTBYPASSPHRASE('clave',@clave)
que igualmente necesita de dos parmetros para poder ser utilizada, la clave con la cual se encripto y la contrasea
encriptada
A Continuacin se mostrara como quedara
as se manda a llamar la funcion con el prefijo "dbo."

haciendo un select se muestra como se encripto

Ahora para que se muestre la contrasea se hace lo siguiente

EN RESUMEN AQU VEMOS TODO LO QUE ESCRIBIMOS PASO A PASO PARA HACER EL EJERCICIO
create database prueba1;
use prueba1
create table usuario
(
id_usuario int primary key,
usuario varchar(20) not null,
pass varbinary(500) not null
)
go
create function FU_ENCRIPTA_PASS
(
@clave varchar(50)
)
RETURNS VarBinary(500)
AS
BEGIN
DECLARE @pass AS VarBinary(500)
SET @pass = ENCRYPTBYPASSPHRASE('clave',@clave)
--encripta la llave para cifrar el campo.
RETURN @pass
END
create function FU_DESENCRIPTA_PASS
(
@clave VARBINARY(500)
)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @pass AS VARCHAR(50)
SET @pass = DECRYPTBYPASSPHRASE('clave',@clave)
RETURN @pass
END
insert into usuario values(1,'usuario 1', dbo.FU_ENCRIPTA_PASS('1234'))
select * from usuario
go
select id_usuario, usuario, dbo.FU_DESENCRIPTA_PASS(pass) from usuario