locked
Generar seriales o claves desde Visual Basic 6.0 RRS feed

  • Pregunta

  •  

    Hola gracias a todos los asistentes de este blog, les quiero comentar lo que estoy buscando desesperadamente,

     

     

    primero quiero generar un serial de activacion de un producto y para generar este serial quiero hacerlo de dos formas:

     

    1. la primera tomando el numero de identificacion de la compañia y su nombre completo con puntos y todo y luego generar una especie de serial o codigo de un numero especifico de caracteres (Por ejemplo 6) y que esta clave que se genera siempre sea de 6 digitos sin importar que tan largo o corto sea el nombre de la empresa.

     

    2. la segunda tomando los datos del servidor en donde esta instalada la base de datos y con esta generar el mismo serial.

     

    Ya he intentado tomar el nombre de la empresa concatenarlo con el numero de identificacion y luego ejecutar algun codigo de encriptacion pero resulta que la cadena que devuelve siempre es diferente dependiendo de que tan largo es el nombre de la compañia. Tambien hemos intentado tomar cierto numero de caracteres y con esos realizar la encriptacion pero no es lo que necesitamos ya que se deberia tomar el nombre completo y no parcial.....

     

    miércoles, 2 de enero de 2008 15:57

Respuestas

Todas las respuestas

  • No es para VB 6.0 y sí para .NET, pero igual te viene bien y te sirve:

     

    http://geeks.ms/blogs/jorge/pages/visual-basic-2005-creando-claves-de-registro-para-nuestras-aplicaciones-net.aspx

     

    Espero que te ayude o te de alguna idea de cómo hacerlo.

     

    • Marcado como respuesta jose walter domingo, 10 de abril de 2011 22:40
    miércoles, 2 de enero de 2008 16:07
  • Hola

    Lo correcto es usar uno de los mejores algoritmos de encriptacion como Rijndael, aqui un ejemplo

        Public Function Ecnripta( _
    ByVal strMensaje As String, _
    ByVal strClave As String, _
    ByVal strIV As String) As String

    On Error GoTo Proc_Err

    'Crea el objeto con la libreria para encriptar
    Dim objRijndael As Rijndael = Rijndael.Create
    objRijndael.Mode = CipherMode.CBC
    objRijndael.Padding = PaddingMode.PKCS7

    'Convierte la Clave en ByteArray
    'Dim SecretKey As Byte() = ASCII.GetBytes("01234567890abcde")
    Dim bytSecretKey As Byte() = ASCII.GetBytes(strClave)
    objRijndael.KeySize = 128
    objRijndael.Key = bytSecretKey

    'Convierte la IV en ByteArray
    'Dim iv As Byte() = ASCII.GetBytes("fedcba9876543210")
    Dim iv As Byte() = ASCII.GetBytes(strIV)
    objRijndael.BlockSize = 128
    objRijndael.IV = iv

    'Convierte el Mensaje en ByteArray
    Dim encrypted As Byte() = ASCII.GetBytes(strMensaje)

    'Crea la instancia para Encriptador
    Dim encryptor As ICryptoTransform = objRijndael.CreateEncryptor(bytSecretKey, iv)

    'Ejecuta la rutina para Encriptar
    Dim bytresult As Byte() = encryptor.TransformFinalBlock(ASCII.GetBytes(strMensaje), 0, strMensaje.Length)

    'Libera Recursos
    objRijndael.Clear()
    encryptor.Dispose()

    'Retorna los resultados como Hex y como Base64
    Me.strMensajeHex = BytesToHex(bytresult)
    Me.strMensajeBin = System.Convert.ToBase64String(bytresult)

    'Retorna el resultado como string
    Ecnripta= BytesToHex(bytresult)

    Exit Function
    Proc_Err:
    MsgBox(Err.Description)
    End Function


    Public Function DesEncripta( _
    ByVal strMensajeHex As String, _
    ByVal strClave As String, _
    ByVal strIV As String) As String

    On Error GoTo Proc_Err

    'Crea el objeto con la libreria para encriptar
    Dim objRijndael As Rijndael = Rijndael.Create
    objRijndael.Mode = CipherMode.CBC
    objRijndael.Padding = PaddingMode.PKCS7

    'Convierte la Clave en ByteArray
    'Dim SecretKey As Byte() = ASCII.GetBytes("01234567890abcde")
    Dim bytSecretKey As Byte() = ASCII.GetBytes(strClave)
    objRijndael.KeySize = 128
    objRijndael.Key = bytSecretKey

    'Convierte la IV en ByteArray
    'Dim iv As Byte() = ASCII.GetBytes("fedcba9876543210")
    Dim iv As Byte() = ASCII.GetBytes(strIV)
    objRijndael.BlockSize = 128
    objRijndael.IV = iv

    'Convierte el TextoEncryptado en ByteArray
    Dim bytMensaje As Byte() = HexToBytes(strMensajeHex)

    'Crea la instancia para Desencriptar
    Dim objdecryptor As ICryptoTransform = objRijndael.CreateDecryptor(bytSecretKey, iv)

    'Ejecuta la rutina para Desencriptar
    Dim bytResultado As Byte() = objdecryptor.TransformFinalBlock(bytMensaje, 0, bytMensaje.Length)

    'Libera Recursos
    objRijndael.Clear()
    objdecryptor.Dispose()

    'Retorna el resultado como string
    DesEncripta= ASCII.GetString(bytResultado)

    Exit Function

    Proc_Err:
    MsgBox("Codigo Hex Incorrecto")
    End Function



    Saludos
    Bitnius

    Programador en VB.NET 2008, SQL SERVER 2008, Crystal Report 2008 Si la respuesta es correcta, marcála como correcta. También puedes votar como útil si te sirvió.
    • Propuesto como respuesta Bitnius jueves, 11 de junio de 2009 6:49
    • Editado Bitnius jueves, 11 de junio de 2009 6:50 .
    jueves, 11 de junio de 2009 6:49
  • HOLAS HOLAS no me funciona hextobytes en vb2008 como hago para que funcione y viceversa bytestohex
    Tengo mucho por aprender
    miércoles, 2 de febrero de 2011 15:10