ASP - Encriptar contraseña

 
Vista:

Encriptar contraseña

Publicado por dargento (5 intervenciones) el 13/01/2006 09:38:54
Buenas.
Necesito dos funcion en ASP , una para encriptar y otra para desencriptar contraseñas.
He visto algunas, pero no se utilizarlas.
Si alguien me pude decir alguna y la manera de utilizacion le estaria muy agradecida.
[email protected]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Encriptar contraseña

Publicado por Santos Pairazamán (415 intervenciones) el 16/01/2006 19:10:47
Aqui tienes unas Fx adecúalas a tus necesidades como yo lo hice en su momento.
Hay muchos métodos de hacer esto es cuestión q busques por IE- Google

'//----------- Funcion que convierte un numero HexaDecimal a Decimal ---------------------------//
Function Dec(isHex)
isHex = UCase(isHex)
If Len(isHex) <> 2 Then
Dec = -1
Exit Function
End If
Dim lsCaracter1,lsCaracter2,lnCaracter1,lnCaracter2
lsCaracter1 = Mid(isHex, 2, 1)
lsCaracter2 = Mid(isHex, 1, 1)
If (lsCaracter1 < "0" Or lsCaracter1 > "9") And (lsCaracter1 < "A" Or lsCaracter1 > "F") Then
Dec = -1
Exit Function
End If
If (lsCaracter2 < "0" Or lsCaracter2 > "9") And (lsCaracter2 < "A" Or lsCaracter2 > "F") Then
Dec = -1
Exit Function
End If
If (lsCaracter1 >= "0" And lsCaracter1 <= "9") Then
lnCaracter1 = Asc(lsCaracter1) - Asc("0")
ElseIf (lsCaracter1 >= "A" And lsCaracter1 <= "F") Then
lnCaracter1 = 10 + Asc(lsCaracter1) - Asc("A")
End If
If (lsCaracter2 >= "0" And lsCaracter2 <= "9") Then
lnCaracter2 = Asc(lsCaracter2) - Asc("0")
ElseIf (lsCaracter2 >= "A" And lsCaracter2 <= "F") Then
lnCaracter2 = 10 + Asc(lsCaracter2) - Asc("A")
End If
Dec = 16 * lnCaracter2 + lnCaracter1
End Function

'//-------------- funcion que Invierte la Cadena -----------------------------------------//
Public Function Invertir(isCadena )
Dim lnLongitud
lnLongitud = Len(isCadena)
If lnLongitud = 0 Then
Invertir = ""
Exit Function
End If
If lnLongitud = 1 Then
Invertir = isCadena
Exit Function
End If
Invertir = Mid(isCadena, lnLongitud, 1) & Invertir(Mid(isCadena, 1, lnLongitud - 1))
End Function

'//---------------- Funcion que Desencripta -------------------------------------------------------//
Function Desencriptar (iscadena)
Dim lnContador, lnLongitud, lnAscii,lsCaracterRnd, lsCaracterDes, lsCaracter, lsCadenaEnc, lsCadenaDes
lsCadenaEnc = Invertir(iscadena)
lnLongitud = Len(lsCadenaEnc) / 2
If lnLongitud Mod 2 <> 0 Then
Desencriptar = ""
Exit Function
End If
For lnContador = 1 To lnLongitud Step 2
lsCaracterRnd = Chr(dec(Mid(lsCadenaEnc, 2 * lnContador - 1, 2)))
lsCaracter = Chr(dec(Mid(lsCadenaEnc, 2 * lnContador + 1, 2)))
lnAscii = (Asc(lsCaracter) - Asc(lsCaracterRnd)) Mod 256
If lnAscii < 0 Then
lsCaracterDes = Chr(256 + lnAscii)
Else
lsCaracterDes = Chr(lnAscii)
End If
lsCadenaDes = lsCadenaDes + lsCaracterDes
Next
Desencriptar = lsCadenaDes
End function

'//-------------- Funcion que Encripta la Cadena -----------------------------------------//
Public Function Encriptar(isCadena)
Dim lnContador,lnLongitud,lnCaracterRnd,lnCaracterEnc,lnCaracter,lsCadenaEnc
Randomize
lnLongitud = Len(iscadena)
For lnContador = 1 To lnLongitud
lnCaracter = Asc(Mid(iscadena, lnContador, 1))
lnCaracterRnd = Int(256 * Rnd())
Do Until lnCaracterRnd <> 0 And _
lnCaracterRnd <> 8 And _
lnCaracterRnd <> 9 And _
lnCaracterRnd <> 10 And _
lnCaracterRnd <> 13 And _
(lnCaracter + lnCaracterRnd) Mod 256 <> 0 And _
(lnCaracter + lnCaracterRnd) Mod 256 <> 8 And _
(lnCaracter + lnCaracterRnd) Mod 256 <> 9 And _
(lnCaracter + lnCaracterRnd) Mod 256 <> 10 And _
(lnCaracter + lnCaracterRnd) Mod 256 <> 13
lnCaracterRnd = Int(256 * Rnd())
Loop
lnCaracterEnc = (lnCaracter + lnCaracterRnd) Mod 256
lsCadenaEnc = lsCadenaEnc + Right("00" + Hex(lnCaracterRnd), 2) + Right(">" + Hex(lnCaracterEnc), 2)
Next
Encriptar = Invertir(lsCadenaEnc)
End Function
la forma de llamarlas :
realizar tu select q traiga el user and pwd y preguntas
If Not Rs.EOF Then
Password=Desencriptar(rs("pwd"))
end if
********************
Para encriptar
password = encriptar(Pwd)
Pwd es un campo q se recupera con request("Pwd")
y luegos realizar tu insert con el password Encriptado.
Hasta Pronto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Encriptar contraseña

Publicado por Javier (1 intervención) el 30/10/2006 18:37:27
Excelente Santos las voy a poner en practica

Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Encriptar contraseña

Publicado por Cesar Tapia (1 intervención) el 30/06/2007 00:49:37
Excelente gracias por la ayuda estaba buscando algo asi, buen metodo de encriptacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Encriptar contraseña

Publicado por IVAN SALDIVAR RODRIGUEZ (1 intervención) el 22/08/2007 20:59:33
Excelente código para encriptar. Aquí les envío los códigos de implementación del mismo algoritmo que desarrollo Santos Pairazamán, pero para montarlos como funciones en SQLServer (fueron testeados en SQLServer2000):

--------------------------------------------------------------------------------------
--// Funcion que convierte un numero HexaDecimal a Decimal //
CREATE FUNCTION DecFX( @isHex AS VARCHAR(128) )
RETURNS DECIMAL
BEGIN
DECLARE @lsCaracter1 AS VARCHAR(1),
@lsCaracter2 AS VARCHAR(1),
@lnCaracter1 AS INTEGER,
@lnCaracter2 AS INTEGER,
@SALIDA AS DECIMAL

SET @isHex = UPPER(@isHex)
IF Len(@isHex) <> 2
BEGIN
SET @SALIDA = -1
GOTO salida_
END

SET @lsCaracter1 = SUBSTRING(@isHex, 2, 1)
SET @lsCaracter2 = SUBSTRING(@isHex, 1, 1)

IF (@lsCaracter1 < '0' Or @lsCaracter1 > '9') And (@lsCaracter1 < 'A' Or @lsCaracter1 > 'F')
BEGIN
SET @SALIDA = -1
GOTO salida_
END

IF (@lsCaracter2 < '0' Or @lsCaracter2 > '9') And (@lsCaracter2 < 'A' Or @lsCaracter2 > 'F')
BEGIN
SET @SALIDA = -1
GOTO salida_
END

IF (@lsCaracter1 >= '0' And @lsCaracter1 <= '9')
SET @lnCaracter1 = ASCII(@lsCaracter1) - ASCII('0')
ELSE
IF (@lsCaracter1 >= 'A' And @lsCaracter1 <= 'F')
SET @lnCaracter1 = 10 + ASCII(@lsCaracter1) - ASCII('A')

IF (@lsCaracter2 >= '0' And @lsCaracter2 <= '9')
SET @lnCaracter2 = ASCII(@lsCaracter2) - ASCII('0')
ELSE
IF (@lsCaracter2 >= 'A' And @lsCaracter2 <= 'F')
SET @lnCaracter2 = 10 + ASCII(@lsCaracter2) - ASCII('A')

SET @SALIDA = 16 * @lnCaracter2 + @lnCaracter1

salida_:
RETURN @SALIDA

END
--SELECT DBO.DecFX('00')

--------------------------------------------------------------------------------------
--// funcion que Invierte la Cadena //
CREATE FUNCTION Invertir( @isCadena AS VARCHAR(128) )
RETURNS VARCHAR(128)
BEGIN
DECLARE @lnLongitud AS INTEGER,
@SALIDA AS VARCHAR(128),
@STR_CARACTER AS VARCHAR(1),
@AVANCE AS INTEGER

SET @lnLongitud = LEN(@isCadena)
SET @SALIDA = ''
SET @AVANCE = 1

IF @lnLongitud = 0
BEGIN
SET @SALIDA=''
GOTO salida_
END

IF @lnLongitud = 1
BEGIN
SET @SALIDA= @isCadena
GOTO salida_
END

WHILE @AVANCE <= LEN(@isCadena)
BEGIN
SET @STR_CARACTER = SUBSTRING(@isCadena,@AVANCE,1)
SET @SALIDA= @STR_CARACTER + @SALIDA
SET @AVANCE = @AVANCE + 1
END
salida_:
RETURN @SALIDA
END

--SELECT DBO.Invertir('1234567890')

--------------------------------------------------------------------------------------
--// Funcion que Desencripta //
CREATE FUNCTION Desencriptar( @iscadena as varchar(128) )
RETURNS VARCHAR(128)
BEGIN

--declare @iscadena as varchar(128)
--set @iscadena = '7862CF09354ED650'

DECLARE @lnContador AS INTEGER,
@lnLongitud AS INTEGER,
@lnAscii AS INTEGER,
@lsCaracterRnd AS VARCHAR(1),
@lsCaracterDes AS VARCHAR(1),
@lsCaracter AS VARCHAR(1),
@lsCadenaEnc AS VARCHAR(128),
@lsCadenaDes AS VARCHAR(128)

SET @lsCadenaEnc = DBO.Invertir(@iscadena)
SET @lnLongitud = Len(@lsCadenaEnc) / 2
SET @lnContador = 1
SET @lsCadenaDes = ''

IF (@lnLongitud % 2) <> 0
BEGIN
SET @lsCadenaDes = ''
GOTO salir_
END

WHILE @lnContador <= @lnLongitud
BEGIN

SET @lsCaracterRnd = CHAR( DBO.DecFX( SUBSTRING(@lsCadenaEnc, 2 * @lnContador - 1, 2) ) )
SET @lsCaracter = CHAR( DBO.DecFX( SUBSTRING(@lsCadenaEnc, 2 * @lnContador + 1, 2) ) )
SET @lnAscii = (ASCII(@lsCaracter) - ASCII(@lsCaracterRnd)) % 256

--print(SUBSTRING(@lsCadenaEnc, 2 * @lnContador - 1, 2))
--print(SUBSTRING(@lsCadenaEnc, 2 * @lnContador + 1, 2))
--print(@lsCaracterRnd)
--print(@lsCaracter)
--print(@lnAscii)
--print('----------------')
If @lnAscii < 0
SET @lsCaracterDes = CHAR(256 + @lnAscii)
Else
SET @lsCaracterDes = CHAR(@lnAscii)


SET @lsCadenaDes = @lsCadenaDes + @lsCaracterDes
SET @lnContador = @lnContador + 2
END

salir_:
--print('@lsCadenaDes: ' + @lsCadenaDes)
RETURN rtrim(@lsCadenaDes)
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error

Publicado por RIcardo (1 intervención) el 14/11/2008 17:03:39
Saludos!!

Me marca el siguiente error en esta linea
lsCaracter = Chr(dec(Mid(lsCadenaEnc, 2 * lnContador + 1, 2)))
Argumento o llamada a procedimiento no válidos: 'Chr'
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error

Publicado por alfonso (1 intervención) el 22/12/2009 12:38:59
Sustituye esa línea por esta:

lsCaracter = Chr(dec(Mid(lsCadenaEnc, 2 * lnContador + 1, 2)))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Encriptar contraseña

Publicado por Programador ASP (1 intervención) el 17/11/2010 19:48:08
gracias pero esto cada vez genera un codigo diferente, puesto que utilizas el random

una vez lo guardas encriptado en la bbdd, luego al hacer el login con el password normal, el login lo encripta para compararlo con el de la bbdd y non cinciden!!

asi que no hay manera de recuperarlo luego!!

:(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Encriptar contraseña

Publicado por Félix Ruiz (2 intervenciones) el 21/10/2011 13:32:04
Precisamente hay radica la poca fuerza de encriptado de este algoritmo la encriptacion depende de una semilla aleatoria que crea diferentes claves encriptadas, pero todas ellas dan la misma clave al desencriptarlas. Por lo tanto lo que tienes que hacer no es encriptar y buscar en la bbdd, sino leer la clave encriptada en la bbdd, desencriptarla y compararla con la clave del formulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Encriptar contraseña

Publicado por cristina (1 intervención) el 30/11/2010 11:59:54
Error de Microsoft VBScript en tiempo de ejecución error '800a0005'

Argumento o llamada a procedimiento no válidos: 'Chr'

Esto ocurre cuando pongo un (_) da un error

Usuario : ctn_soc
Contraseña : ctn_soc

No lo he podido resolverlo

Alguien me puede ayudar

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Encriptar contraseña

Publicado por Félix Ruiz (2 intervenciones) el 24/10/2011 09:11:52
El problema esta en la función de encriptado, cambiar la linea:

lsCadenaEnc = lsCadenaEnc + Right("00" + Hex(lnCaracterRnd), 2) + Right(">" + Hex(lnCaracterEnc), 2)

por:

lsCadenaEnc = lsCadenaEnc + Right("00" + Hex(lnCaracterRnd), 2) + Right("00" + Hex(lnCaracterEnc), 2)

Se estaban creando cadenas de pares no hexadeciamles.

Lo mismo para Ricardo.

Saludos ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar