Professional Documents
Culture Documents
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
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."
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