Como generar una cadena de letras aleatorias...

Iniciado por Danieldark, 15 Agosto 2007, 04:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Danieldark

Hola, bueno, disculpen la molestia, quisiera saber si alguno de uds me pudiera ayudar, el problema es que necesito generar una cadena de letras aleatorias de la misma extension que otra cadena dada, por ejemplo

De "Visual Basic" generar "ahtovofunfod", de "Hola" generar "akjg" y asi...

Ojala alguien pueda ayudarme... desde ya, muchas gracias

APOKLIPTICO

Aqui esta la solución a tu problema  ;D ;D ;D.

Código (vb) [Seleccionar]
Option Explicit
'Agregamos Dos TextBox y un CommandButton
'En Text1 se pone la cadena a trabajar.
'En Text2 aparece la cadena aleatoria de la misma longitud de Text1.

Private Sub Command1_Click()
Randomize Timer
Dim i As Long
Text2 = ""
Command1.Enabled = False
Text1.Enabled = False
Text2.Enabled = False
For i = 1 To Len(Text1)
DoEvents
Text2 = Text2 & Chr(Round(Rnd * 25 + 65, 0))
Next i
Command1.Enabled = True
Text1.Enabled = True
Text2.Enabled = True
End Sub


Espero que te sirva...
Un abrazo!
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Danieldark

 :o muchisimas gracias apokliptico!! jejeje mmm me sirvio de maravilla, jajaja yo andaba por otros rollos y quebrandome la cabeza jajaja pero analizandolo es muy sencillo, es que apenas me ando metiendo en esto de VB, oye, si no es mucha molestia, una duda mas, como podria hacer para sacar los ASCII de ambas cadenas y sumar el ASCII de letra por letra de ambas cadenas, o sea el valor de la primera del texto original mas el valor de la primera de la cadena aleatoria, y guardar el resultado y luego el de las segundas y guardarlo y asi, mmm es que quiero hacer un ejemplo de encriptacion por sustitucion y pues la verdad es bastante sencillo el "algoritmo"que usare pero pues apenas voy iniciando.

Ojala tengas tiempo para esa dudida, y muchisimas gracias por esta :)

APOKLIPTICO

Entiendo lo que pensas hacer, pero el problema que tenes que ese algoritmo, es que no vas a poder volver atrás sino sabes la cadena aleatoria que generaste  :-\, ya que es aleatoria. Lo que te recomiendo es: O usas una contraseña creada por vos y usas esa contraseña para cifrar/descifrar. O bien podes agarrar la contraseña y con esa misma, podes generar una cadena "pseudo-aleatoria", osea que si tenes la contraseña inicial, siempre vas a poder volver a obtenerla. Me explico? Tambien te podes fijar en mi algoritmo: CryptoForm V1.1 By Apokliptico.
En el post está explicado como funciona. Espero que te sirva.
Un abrazo!
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

HaDeS, -

#4
Código (vb) [Seleccionar]

'Para llamar a la funcion se hace por ejemplo
'Text1.text = Random(Text1.text)
Private Function Random(ByVal Texto As String) As String
Dim i&, menor&, mayor&, x&, r$      'Declaraciones
menor = 32                          'Caracter Ascii menor
mayor = 127                         'Caracter Ascii mayor
Randomize                           'Inicializar el generador de numeros aleatorios
For i = 1 To Len(Texto)             'Desde uno hasta la longitud del texto
x = Int((mayor - menor + 1) * Rnd + menor)      'Escoje un valor aleatorio tipo integer entre el Ascii menor y el Ascii mayor y lo asigna a x
If x > mayor Then x = mayor         'Si el valor de x es mayor al Ascii mayor entonces el valor de x es igual al Ascii mayor
r = r & Chr$(x)                     'El texto final es el texto final mas el caracter que simboliza el codigo Ascii en x
Next i                              'Termina el contador
Random = r                          'La funcion es igual al texto generado
End Function


Espero que les sea de ayuda :P

sirdarckcat

HaDeS:
Citar
Código (javascript) [Seleccionar]
(function(l){m="";for(i=0;i<l;i++)m+=String.fromCharCode(Math.random()*64+0x30);return m})
generar 10 caracteres:
Código (javascript) [Seleccionar]
javascript:alert((function(l){m="";for(i=0;i<l;i++)m+=String.fromCharCode(Math.random()*64+0x30);return m})(10))
si quieres que solo sean letras..
Código (javascript) [Seleccionar]
javascript:alert((function(l){m="";for(i=0;i<l;i++)m+=String.fromCharCode(Math.random()*25+0x41);return m})(10))
^^ venga, no me ganas jeje

HaDeS, -

Cita de: Sirdarckcat en 17 Agosto 2007, 04:13 AM
HaDeS:
Citar
Código (javascript) [Seleccionar]
(function(l){m="";for(i=0;i<l;i++)m+=String.fromCharCode(Math.random()*64+0x30);return m})
generar 10 caracteres:
Código (javascript) [Seleccionar]
javascript:alert((function(l){m="";for(i=0;i<l;i++)m+=String.fromCharCode(Math.random()*64+0x30);return m})(10))
si quieres que solo sean letras..
Código (javascript) [Seleccionar]
javascript:alert((function(l){m="";for(i=0;i<l;i++)m+=String.fromCharCode(Math.random()*25+0x41);return m})(10))
^^ venga, no me ganas jeje

Yo no he dicho que el visual es bonito xDD jajajaja mira:
Código (vb) [Seleccionar]

Function r(t)
For i = 1 To Len(t): m = m & Chr$(Rnd * 115): Next i: r = m
End Function

Mi codigo tiene 88 caracteres, el tuyo 90 xD

sirdarckcat

ehmm..
este tiene 77
Código (javascript) [Seleccionar]
eval("String.fromCharCode("+(""+Math.random()).replace(/(.)/g,"6$1,")+"0)");
pruebalo asi:
Código (javascript) [Seleccionar]
javascript:eval("String.fromCharCode("+(""+Math.random()).replace(/(.)/g,"6$1,")+"0)");

;)

HaDeS, -

Cita de: Sirdarckcat en 17 Agosto 2007, 04:51 AM
ehmm..
este tiene 77
Código (javascript) [Seleccionar]
eval("String.fromCharCode("+(""+Math.random()).replace(/(.)/g,"6$1,")+"0)");
pruebalo asi:
Código (javascript) [Seleccionar]
javascript:eval("String.fromCharCode("+(""+Math.random()).replace(/(.)/g,"6$1,")+"0)");

;)


Este tiene 65 ;)
Código (vb) [Seleccionar]

Sub r()
For i=1 To Len(t):a=a & Chr$(Rnd*65+32):Next i:t=a
End Sub


t es como decir Text1 xD
jajaja

sirdarckcat

62!!!!

Código (javascript) [Seleccionar]
s=i="9";while(i--){s+=(location+"")[(new Date).getTime()%9^i]}

^^ aunqe la cadena no es muy aleatoria xD