Explicacion de estas funciones

20/07/2004 - 18:57 por Pablo Fabian Savino | Informe spam
Hola gente,
necesito encryptar unas claves (tema mas que viejo) y dabdo
vueltas por la red encontre estas funciones
pwdencrypt
pwdcompare

puedo encryptar bien , pero al momento de comparar el
sstring con lo encriptado nunca me da el 1 o true, siempre me sale que 0 o
False, entonces como puedo protejer una clave?

me podrian dar un ejemplo que sea valido, a continuacion les
muestro que es lo que hago para aprender esta tecnica:

create proc encriptar
(
@clave char(20)
)
as
begin
declare
@w_crypt_pwd varbinary(40),
@in_password char(20)

Select @in_password =@clave

set @w_crypt_pwd = convert(varbinary(40),pwdencrypt(@in_password))
select @w_crypt_pwd --Veo la clave encryptada
select pwdcompare(@clave,@w_crypt_pwd) --Intento comparar lo
encriptado con el string pero nunca da bien a pesar que esta bien
end


saludos

Preguntas similare

Leer las respuestas

#6 Javier Loria
21/07/2004 - 06:22 | Informe spam
Hola:
Yo soy muy alergico a guardar claves y este tipo de cosas precisamente
por lo mismo.
Algo que ayuda mucho a complicarle la vida a los que quieres quebrar
estas llaves es la SAL. La SAL es caracteres adicionales basura. Si aparte
de eso la agregas en lugares diferentes cada vez mucho mas dificil.
Un ejemplo, siguiendo tu codigo pero no en lugares diferentes sino solo
caracter de por medio:
==-- Mecanismo Tonto para Permitir Random en las Funciones.
CREATE VIEW Letras(Caracter)
AS
SELECT CHAR(RAND()*77+23)
GO
ALTER function fn_Encrypt(@Password varchar(128))
returns varchar(128)
as
begin
declare @x int,
@EncryptedPassword varchar(128)
select @x=1, @EncryptedPassword=''
while @x<len(@Password)+1
begin
dinamico. Mejor seria 128 ?
set
@EncryptedPassword=@EncryptedPassword+char(ascii(substring(@Password,@x,1))+
@x)
set @EncryptedPassword=@EncryptedPassword+(SELECT
Caracter FROM Letras)
set @x=@x+1
end
return @EncryptedPassword
end

GO
ALTER function fn_Decrypt(@Password varchar(128))
returns varchar(128)
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)
set @x=@x+2
end

return @DecryptedPassword
end
go
== Ojala te guste,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Isaías escribio:
Hola Javier

Si tienes mucha razon, lo que pasa es que los compañeros
que tengo (Que usan SQL) no son tan "traviesos" como
comentas, mas bien, son lentos para investigar.

Por ser tan SIMPLES, no queria postearlas.

Pero acepto todo tipo de comentarios para mejorarlas.

Saludos.
Respuesta Responder a este mensaje
#7 Isaías
21/07/2004 - 16:55 | Informe spam
Perfecto Javier

Solo una pregunta, es claro que todos aquellos passwords
que se hayan creado con la anterior funcion, ¿no podran
ser des-encryptados con la modificacion que me envias,
cierto?

Un saludo y gracias por los consejos.
Respuesta Responder a este mensaje
#8 Javier Loria
21/07/2004 - 22:01 | Informe spam
Hola Isaias:
No, exactamente.
Revisala bien, porque fue escrita al vuelo. Algunos comentarios:
a) Duplica el espacio, ahora una clave de 4 caracteres ocupa 8 bytes.
Cuidado con esto.
b) No revise bien los simbolos y letras especiales, debes hacer pruebas
con esto, particularmente los que estan cerca del caracter 127 y 255.
c) Se puede mejorar con algunos cambios pequenos. (Sal en posiciones
moviles?).
d) A la hora de implementarlo, puedes hacerlo asi:
- Nadie usando la Tabla.
- Altera la Funcion de Encripcion.
ALTER FUNCTION fn_Encrypt
- Actualiza los Datos, con el nuevo algoritmo
UPDATE Tabla
Columna=dbo.fn_Encrypt(dbo.fn_Decrypt(Columna))
- Altera la Funcion de Desencripcion
ALTER FUNCTION fn_Dencrypt ...
- Ok, todos pueden usar la Tabla.
= Saludos, si tengo oportunidad el fin de semana, la reviso.


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Isaías escribio:
Perfecto Javier

Solo una pregunta, es claro que todos aquellos passwords
que se hayan creado con la anterior funcion, ¿no podran
ser des-encryptados con la modificacion que me envias,
cierto?

Un saludo y gracias por los consejos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida