Está usted en Indice > Construcción > Lenguajes > ASP > Lecciones y Paso a Paso > Generar passwords aleatorias en ASP
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Generar passwords aleatorias en ASP

Función escrita en VBScript que genera secuencias de caracteres aleatorias, muy útil para generar contraseñas para los usuarios de un sitio Web

Aquí os presento una función escrita en VBScript que os genera secuencias de caracteres aleatorias, muy útil para generar contraseñas para los usuarios de tu sitio Web. Genera contraseñas con y sin caracteres repetidos y de la longitud que queramos. ¡Números aleatorios en VBScript!

Introducción

Nuestra función, PwdAleatorio va a recibir como argumentos:

  • Longitud, que es la longitud de la contraseña que queremos.
  • Repetir (verdadero/falso) que indica si se pueden o no repetir caracteres.

Para calcular la contraseña, vamos a hallar números aleatorios, y después traducimos esos números en caracteres.

(El código de la función al completo está disponible al final del artículo)

Números aleatorios

VBscript nos provee de un generador de números aleatorios. Debemos utilizar Randomize (instrucción, se pone a secas) para inicializar una semilla para generar los números aleatorios, y después la función Rnd que devuelve un número aleatorio entre 0 y 1. Si multiplicamos este valor por un número, obtenemos números mayores que cero ¿verdad? Y si queremos números enteros, como en nuestro caso, podemos utilizar la función Int que devuelve sólo la parte entera del número, sin decimales.

Por ejemplo:

  <%  
  		Randomize  
		Response.Write ( int(rnd*10))  
  %>

nos devuelve números aleatorios entre 0 y 9: rnd nos da un 0.534 por ejemplo. Lo multiplicamos por 10 y tenemos 5.34. Por último int nos devuelve el 5. Si quisiéramos entre 1 y 10, tendríamos que sumar 1.

PwdAleatorio al desnudo

Para obtener una contraseña, necesitamos elegir caracteres (letras y dígitos, por ejemplo). Para hacer esto, definimos un vector con todos los caracteres que queremos utilizar, mediante la función Array: Array("a", "b",.....). Después, elegimos números aleatorios entre 0 y el máximo índice de este vector, y tenemos nuestros caracteres. ¿Fácil verdad?

Si queremos evitar que no se repitan caracteres, tenemos que llevar la cuenta de cuáles ya hemos escogido. Nos creamos otro vector para ir guardando los números aleatorios. Cuando escogemos uno, comprobamos que no existe ya en el vector antes de incluirlo.

Finalmente, devolvemos la cadena utilizando Join. Esta función une todos los elementos de un vector, separándolos con un delimitador que le especificamos. Si ponemos dos dobles comillas, simplemente une todos los elementos, que es lo que queremos.

Para utilizar la función en vuestras páginas ASP, simplemente tenéis que escribir:

  <%
      Dim strPassword
      strPassword = PwdAleatorio(10, False)
	  Response.Write("Te hemos asignado esta contraseña: " & strPassword)
  %>

En resumen

Esta sencilla función es un buen ejemplo de uso de los números aleatorios. Se me olvidaba comentaros que podéis personalizarla a vuestro gusto, incluyendo otros caracteres válidos para las contraseñas, como #, _, -, ?, !... Sólo tenéis que añadirlas a la lista

Código de la función

'==========================================================
Function PwdAleatorio ( Longitud, Repetir )
'----------------------------------------------------------
' por Carlos de la Orden Dijs, Abril 2001 - 100% gratis! ;-)
'----------------------------------------------------------
' Devuelve una cadena con una secuencia de caracteres
' aleatoria, de longitud especificada.
' Si Repetir = True la secuencia puede contener caracteres
' repetidos. Si Repetir = False, todos los caracteres son
' únicos. 
' Para añadir más caracteres posibles, añadirlos al vector
' vCaracteres simplemente separando como comas, como los
' que están ya escritos, y la función los escogerá.
'----------------------------------------------------------
Dim vPass(), I, J ' nuestro vector y dos contadores
Dim vNumeros()	  ' vector para guardar lo que llevamos
Dim n, bRep		  
Dim vCaracteres	  ' vector donde están los posibles caract.

vCaracteres = Array("a","b", "c", "d", "e", "f", "g", "h", _
"i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", _
"u", "v", "w", "x", "y", "z", "A","B", "C", "D", "E", "F", _ 
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", _
"S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", _
"5", "6", "7", "8", "9", "0")

'Establezco la longitud del vector
Redim vPass(Longitud-1)
'Y del vector auxiliar que guarda los caracteres ya escogidos
Redim vNumeros(Longitud-1)
I = 0
'Inicializo los nºs aleatorios
Randomize
'Hasta que encuentre todos los caracteres
do until I = Longitud
	'Hallo un número aleatorio entre 0 y el máximo indice
	' del vector de caracteres.
	n = int(rnd*Ubound(vCaracteres))
	'Si no puedo repetir...
	if not Repetir then
		bRep = False
		'Busco el numero entre los ya elegidos
		for J = 0 to UBound(vNumeros)
			if n = vNumeros(J) then
			'Si esta, indico que ya estaba
				bRep = True
			end if
		next
		'Si ya estaba, tengo que repetir este caracter
		'así que resto 1 a I y volvemos sobre la misma
		'posición.
		if bRep then 
			I = I - 1
		else
			vNumeros(I) = n
			vPass(I) = vCaracteres(n)	
		end if
	else
	'Me da igual que esté o no repetido
		vNumeros(I) = n
		vPass(I) = vCaracteres(n)
	end if
'Siguiente carácter!
I = I + 1
loop

'Devuelvo la cadena. Join une los elementos de un vector
'utilizando como separador el segundo parámetro: en este
'caso, nada -> "".
PwdAleatorio = Join(vPass, "")

End Function 'PwdAleatorio
'==========================================================
  




Autor: Carlos de la Orden
http://www.aspfacil.com/articulos/170401.asp

Usuarios que han visto este tema también han visto...

- Lectura y escritura de archivos en ASP
- Chequear que exista un fichero con ASP
- Lectura y Escritura de Archivos
- Crear Gráficos de Barras en ASP
- Optimizar paginas ASP


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 13-10-2008 a las 02:04:22