Como Encriptar Base de Datos en SQL Server 2000
--Puedes hacerlo usando estas dos funciones que te anexo, las hice para
--campos de tipo char o varchar.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EncriptarHilera]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[EncriptarHilera]
GO
create function EncriptarHilera ( @ValorAEncriptar varchar(20) , @LLave varchar(20) )
returns varchar(20)
as
begin
declare @I as Int
declare @c as int
declare @Resultado as varchar(20)
set @LLave = upper(@llave)
set @I=1
while @I <= Len(@ValorAEncriptar)
begin
set @c = ASCII(substring(@ValorAEncriptar, @I, 1))
set @c = @c + ASCII(substring(@LLave, (@I % Len(@LLave)) + 1, 1))
if @Resultado is null
begin
set @Resultado = CONVERT(varchar(1), Char(@c))
end
else begin
select @Resultado = rtrim(CAST(@Resultado AS varchar(20))) + CAST(Char(@c) AS varchar(1))
end
set @I=@I+1
end
RETURN @Resultado
End
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DesEncriptarHilera]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[DesEncriptarHilera]
GO
create function DesEncriptarHilera ( @ValorADesEncriptar varchar(20) , @LLave varchar(20) )
returns varchar(20)
as
begin
declare @I as Int
declare @c as int
declare @Resultado as varchar(60)
set @LLave = upper(@llave)
set @I=1
while @I <= Len(@ValorADesEncriptar)
begin
set @c = ASCII(substring(@ValorADesEncriptar, @I, 1))
set @c = @c - ASCII(substring(@LLave, (@I % Len(@LLave)) + 1, 1))
if @Resultado is null
begin
set @Resultado = CONVERT(varchar(1), Char(@c))
end
else begin
select @Resultado = rtrim(CAST(@Resultado AS varchar(60))) + CAST(Char(@c) AS varchar(1))
end
set @I=@I+1
end
RETURN @Resultado
End
--copia esto a tu Sql Query Analizer y ejecutalo sobre la base de datos que
--deseas encriptar.
--La forma de utilizar las funciones es la siguiente:
-- Este es el script de la tabla en donde realice las pruebas por si desean probar las sentencias de como
-- se utiliza las funciones de Encriptar y Desencriptar
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Encriptar]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Encriptar]
GO
CREATE TABLE [dbo].[Encriptar] (
[IdRegistro] [int] IDENTITY (1, 1) NOT NULL ,
[Tarjeta] [varchar] (19) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Encriptar] ADD
CONSTRAINT [PK_Encriptar] PRIMARY KEY CLUSTERED
(
[IdRegistro]
) ON [PRIMARY]
GO
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
-- Las funcion para encriptar se llama EncriptarHilera y para desencriptar se llama DesEncriptarHilera
-- Estas dos funciones reciben 2 parametros, El campo a encriptar que debe ser un char o varchar y
-- la llave de encriptacion, que puede ser de cualquier tamano
-- La forma de invocarlar es el siguiente
--
-- NombreBaseDatos.dbo.EncriptarHilera
-- NombreBaseDatos.dbo.DesEncriptarHilera
-- En estos ejemplos de uso de las funciones la base de datos se llama "avances" de forma que deben sustituirla
-- por el correspondiente nombre de las bases de datos en que correran, Ademas es necesario que se hayan corrido
-- los script "Funcion de Encriptar.sql" y "Funcion de DesEncriptar.sql" en la mismas.
-- !!! Es importante tener el cuidado de que no se ejecute el proceso de encritacion mas de una vez !!!
---------------------------------------------------------------------------------------------------------------
-- Para realizar la encriptacion se realizaria de la forma siguiente, utilizando la funcion EncriptarHilera
---------------------------------------------------------------------------------------------------------------
insert into Encriptar values (avances.dbo.EncriptarHilera ('1111-2222-1122-8000','Valor de la LLave'))
---------------------------------------------------------------------------------------------------------------
-- Para probar que se encripto correctamente usamos este select
---------------------------------------------------------------------------------------------------------------
Select * From Encriptar
---------------------------------------------------------------------------------------------------------------
-- Para ver los datos desencriptados usamos la funcion DesEncriptarHilera
---------------------------------------------------------------------------------------------------------------
Select avances.dbo.DesEncriptarHilera(tarjeta,'Valor de la LLave') from encriptar
---------------------------------------------------------------------------------------------------------------
-- Para hacer una busqueda por un campo encriptado esta seria la forma
---------------------------------------------------------------------------------------------------------------
Declare @TarjetaABuscar as varchar(19)
Select @TarjetaABuscar = '1111-2222-1122-8000'
Select idRegistro, avances.dbo.DesEncriptarHilera(tarjeta,'Valor de la LLave')
From encriptar
Where avances.dbo.DesEncriptarHilera(tarjeta,'Valor de la LLave')=@TarjetaABuscar
---------------------------------------------------------------------------------------------------------------
-- Para realizar una encriptacion completa de la tabla utilzando Update
---------------------------------------------------------------------------------------------------------------
Update encriptar
Set tarjeta = avances.dbo.encriptarhilera(tarjeta,'Valor de la LLave')
---------------------------------------------------------------------------------------------------------------
-- Para realizar una desencriptacion completa de la tabla utilzando Update
---------------------------------------------------------------------------------------------------------------
Update encriptar
Set tarjeta = avances.dbo.DesEncriptarHilera(tarjeta,'Valor de la LLave')
espero te sirva, cualquier consulta con mucho gusto