Estaba programando un RandomSplit y como he mejorado mi sRandomString he visto
que puede ser útil para el que necesite generar cadenas para claves, o para rellenar
de basura el stub, no es nada del otro mundo, solo que es muy configurable.

Lo he comentado un poquito para que sea más didáctico para los que empiezan con
el VB6 y aprendan a ser ordenados con el código

Código: Seleccionar todo

'------------------------------------------------------------------------------
' Procedure : sRandomString v0.2
' DateTime  : 23-04-2010 15.32
' Author    : Tk68
' Purpose   : Genera cadena aleatoria
'------------------------------------------------------------------------------
' Optional lStringSize   Long    : Tamaño cadena
' (De no indicar tamaño usará uno aleatorio 8 a 255)
'
' Optional bNumericalChr Boolean : Usar car. numéricos   (0-9)
' Optional bAlphabetChr  Boolean : Usar car. alfabéticos (a-z, A-Z)
' Optional bSpecialChr   Boolean : Usar car. especiales  (No: Num.-Alpha.-Ctl)
' Optional bControlChr   Boolean : Usar car. control     (ASCII 0-32, 127)
' Optional sUserChr      String  : Usar car. de usuario  (Los que pongamos...)
' (De no indicar caracteres usará todos los ASCII + ASCII Ext.)
'------------------------------------------------------------------------------
' Usage:
'   sRandomString ()                   ' ASCII + ASCII Ext. y tamaño aleatorio
'   sRandomString (32,True,True)       ' Alfanumérica       y tamaño 32
'   sRandomString (,,,True)            ' Especiales         y tamaño aleatorio
'   sRandomString (4,True,,,,"ABCDEF") ' Hexadecimal        y tamaño 4
'------------------------------------------------------------------------------
Public Function sRandomString( _
       Optional lStringSize As Long, _
       Optional bNumericalChr As Boolean, _
       Optional bAlphabetChr As Boolean, _
       Optional bSpecialChr As Boolean, _
       Optional bControlChr As Boolean, _
       Optional sUserChr As String _
     ) As String

  ' Rango tamaño aleatorio (8 a 255)
  Const lStringSizeRndMin As Long = 8
  Const lStringSizeRndMax As Long = 255

  ' Contadores
  Dim i As Integer
  Dim l As Long
  
  ' Caracteres
  Dim sNumericalChr As String
  Dim sAlphabetChr As String
  Dim sSpecialChr As String
  Dim sControlChr As String
  
  ' Misc
  Dim sChrTable As String
  Dim iTableSize As Integer
  Dim iRndPosChrTable As Integer
  Dim sRandomStringTemp As String
  
  ' Caracteres numéricos
  sNumericalChr = "1234567890"
  
  ' Caracteres alfabéticos
  sAlphabetChr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  
  ' Caracteres especiales
  sSpecialChr = " !""""#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
  For i = 128 To 255: sSpecialChr = sSpecialChr & Chr(i): Next
  
  ' Caracteres control
  sControlChr = Chr(127)
  For i = 0 To 32: sControlChr = sControlChr & Chr(i): Next
  
  ' Creamos la tabla de caracteres a usar
  If bNumericalChr Then sChrTable = sChrTable & sNumericalChr
  If bAlphabetChr Then sChrTable = sChrTable & sAlphabetChr
  If bSpecialChr Then sChrTable = sChrTable & sSpecialChr
  If bControlChr Then sChrTable = sChrTable & sControlChr
  sChrTable = sChrTable & sUserChr
  If sChrTable = vbNullString Then ' De no indicar caracteres usará todos los ASCII + ASCII Ext.
    For i = 0 To 255: sChrTable = sChrTable & Chr(i): Next
  End If
  iTableSize = Len(sChrTable) ' Longitud tabla caracteres

  Randomize
  
  ' De no indicar tamaño usará uno aleatorio
  If lStringSize = 0 Then lStringSize = Int((lStringSizeRndMax - lStringSizeRndMin + 1) * Rnd + lStringSizeRndMin)
  
  ' Generamos cadena aleatoria hasta tamaño lStringSize
  For l = 1 To lStringSize
    iRndPosChrTable = Int((iTableSize * Rnd) + 1) ' Generando posición aleatoria para extraer carácter de la tabla
    sRandomStringTemp = sRandomStringTemp & Mid(sChrTable, iRndPosChrTable, 1) ' Generando cadena
  Next

  sRandomString = sRandomStringTemp
End Function
Yo tenia ya un mi "random" ,pero el tuyo es muxo mas completo ! muy bueno tk68


Saludos!
http://osx-soft.blogspot.com
Gracias amigo por explicar las cosas yo con esto disfruto.Un saludo
novirusthanks.org + no distribuir la muestra y siempre seremos indetectables
Imagen
Este es uno de Karcrack que es más pequeño:

Código: Seleccionar todo

Public Function Aleatorio(Tamaño As String) As String ' // Autor "Karcrack"
    
    Dim i As Long
    
    For i = 1 To Tamaño
        Randomize
        Aleatorio = Aleatorio & Chr$(CLng((65 - 90) * Rnd + 90))
    Next i
    
End Function
Muy bueno el tuyo también aunque algo largo.

Saludos
¿Si usted muriera hoy esta seguro que iría al cielo?
http://www.antesdelfin.com/salvo.html

© Indetectables Team
Responder

Volver a “Otros lenguajes”