¿tienes SQL 2000?
-- Crear una Vista
-- CopyRight (Javier Loria 2004)
CREATE VIEW Letras(Caracter)
AS
SELECT CHAR(RAND()*77+23)
-- Funcion para ENCRYPTAR
CREATE FUNCTION fn_Encrypt(@Password varchar(128))
RETURNS VARCHAR(128)
WITH ENCRYPTION
AS
BEGIN
DECLARE @x INT,
@EncryptedPassword VARCHAR(128)
SELECT @x=1, @EncryptedPassword=''
WHILE @x<len(@Password)+1
BEGIN
-- Cambio En lugar del Len haces @x para que sea
dinamico. Mejor seria 128 - @x?
SET @EncryptedPassword=@EncryptedPassword+CHAR(ascii
(substring(@Password,@x,1))+@x)
-- Agrega SAL
SET @EncryptedPassword=@EncryptedPassword+(SELECT
Caracter FROM Letras)
SET @x=@x+1
END
RETURN @EncryptedPassword
END
-- Funcion para DESENCRYPTAR
CREATE FUNCTION fn_Decrypt(@Password VARCHAR(128))
RETURNS VARCHAR(128)
WITH ENCRYPTION
AS
BEGIN
DECLARE @x INT,
@DecryptedPassword VARCHAR(128)
SELECT @x=1,@DecryptedPassword=''
WHILE @x<len(@Password)+1
BEGIN
SET @DecryptedPassword=@DecryptedPassword+char(ascii
(substring(@Password,@x,1))-(@x+1)/2)
-- Ignora Caracter de por Medio.
SET @x=@x+2
END
RETURN @DecryptedPassword
END
-- Ejecucion de la funcion
SELECT dbo.fn_Encrypt('superman')
-------------------
t#wLsi.w,shKvK
(1 row(s) affected)
SELECT dbo.fn_Decrypt('t#wLsi.w,shKvK')
--------------------
superman
(1 row(s) affected)