domingo, 26 de octubre de 2008

Encriptado en forma facil cadenas con hash y key

seguridad

bueno lo primero creen una clase llamada encript.vb

aca esta

http://rapidshare.com/files/157895456/encript.vb.html

y copien esto

 

Imports System

Imports System.IO

Imports System.Security

Imports System.Security.Cryptography

Imports System.Text

Public Class encript

#Region "Contraseñas Hash"

    'Con esta función que tenemos aquí abajo, lo que haces es transformar la cadena en Bytes.

    Shared Function ConvertirCadenaEnMatrizDeTipoByte(ByVal Cadena As [String]) As [Byte]()

        Return (New UnicodeEncoding).GetBytes(Cadena)

        'Retornamos la cadena convertida.

    End Function

    'En esta función la cadena la convertiremos en Bytes con la función anterior, lo transformaremos en un valor Hash, encriptado con el algoritmo SHA512 y más tarde lo convertiremos en una cadena.

    Public Function EncriptarHash(ByVal ValorAEncriptar As String) As String

        Dim ValorToHash As [Byte]() = ConvertirCadenaEnMatrizDeTipoByte(ValorAEncriptar)

        'Declaramos la variable de tipo Byte y llamamos a ConvertirCadenaEnMatrizDeTipoByte y convertimos la cadena a encriptar en typo Byte

        Dim ValorHash As Byte() = CType(CryptoConfig.CreateFromName("SHA512"), HashAlgorithm).ComputeHash(ValorToHash)

        'Encriptamos variable Byte en una cadena de tipo Byte, también.

        Return Convert.ToBase64String(ValorHash)

        'BitConverter.ToString(ValorHash)

        'Retornamos la variable de tipo Byte en String.

    End Function

    'Para comparar dos valores lo primero es enviar como parametros una cadena sin encriptar y otra cadena encriptada, con el mismo tipo de encriptación, y haciendo uso del mismo algoritmo, en nuestro caso usaremos Hash con el algoritmo SHA512. Luego encriptamos el valor si encriptar y comparamos los dos valores, retornando True si son iguales y False si son diferentes, esto lo podemos hacer con una simple sentencia IF.

    Public Function Comparar(ByVal ValorSinEncriptar As String, ByVal ValorEncriptado As String) As Boolean

        If EncriptarHash(ValorSinEncriptar) = ValorEncriptado Then

            Return True

        Else

            Return False

        End If

    End Function

#End Region

#Region "Encriptar/Desencriptar"

    Const StrClave As String = "EjemploDeCodigo"

    Public Function EncriptarTexto(ByVal CadenaAEncriptar As String, Optional ByVal Clave As String = StrClave, Optional ByVal MantenerMayusculas As Boolean = True)

        Dim i As Integer, C As Integer

        Dim CadenaEncriptada As String

        If MantenerMayusculas = False Then

            Clave = Clave.ToUpper()

            CadenaAEncriptar = CadenaAEncriptar.ToUpper()

        End If

        If Len(Clave) Then

            For i = 1 To Len(CadenaAEncriptar)

                C = Asc(Mid$(CadenaAEncriptar, i, 1))

                C = C + Asc(Mid$(Clave, (i Mod Len(Clave)) + 1, 1))

                CadenaEncriptada = CadenaEncriptada & Chr(C And &HFF)

            Next i

        Else

            CadenaEncriptada = CadenaAEncriptar

        End If

        Return CadenaEncriptada

    End Function

    Public Function DesencriptarTexto(ByVal CadenaADesencriptar As String, Optional ByVal Clave As String = StrClave, Optional ByVal MantenerMayusculas As Boolean = True)

        Dim i As Integer, C As Integer

        Dim CadenaDesencriptada As String

        If MantenerMayusculas = False Then

            Clave = Clave.ToUpper

        End If

        If Len(Clave) Then

            For i = 1 To Len(CadenaADesencriptar)

                C = Asc(Mid$(CadenaADesencriptar, i, 1))

                C = C - Asc(Mid$(Clave, (i Mod Len(Clave)) + 1, 1))

                CadenaDesencriptada += Chr(C And &HFF)

            Next i

        Else

            CadenaDesencriptada = CadenaADesencriptar

        End If

        Return CadenaDesencriptada

    End Function

#End Region

End Class

 

bueno las funciones que nos da esta clase son las siguientes

usando la clase

 

      adacadabra seria la clave para descriptar

Dim en As New encript

en.EncriptarTexto("hola", "adacadabra", True)
en.DesencriptarTexto("texto a descriptar", "adacadabra", True)

hay el ejemplo demaciado facil xD. usa SHA512 para encriptar muy seguro.

asp .net mostrando cuantos usuarios hay online

 

bueno lo primero tenemos que crear un archivo global.asax y agregar el siguiente codigo

 

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when a new session is started
       
        Try
            If IsNumeric(Application.Item("contador")) = False Then
                Application.Item("contador") = 1
            End If
            Dim x1 As Single
            x1 = Val(Application.Item("contador").ToString)
            x1 = x1 + 1
            Application.Item("contador") = x1
            Application.Item("urlref") = Me.Request.UrlReferrer.ToString
        Catch ex As Exception

        End Try
    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when a session ends.
        ' Note: The Session_End event is raised only when the sessionstate mode
        ' is set to InProc in the Web.config file. If session mode is set to StateServer
        ' or SQLServer, the event is not raised.
        Try
            If IsNumeric(Application.Item("contador")) = False Then
                Application.Item("contador") = 0
            End If
            Dim x1 As Single
            x1 = Val(Application.Item("contador").ToString)
            x1 = x1 - 1
            Application.Item("contador") = x1
        Catch ex As Exception

        End Try
    End Sub

 

que hace cuando se inicia una sesion se sumara a la variable contador +1 cuando el servidor genere el timeout hara el -1

bueno para mostrar los usuarios online es facil basta en el master page o la pagina principal

poner un control label o  y asignarle el valor

Application.Item("contador"))

    Try

label1.text=Application.Item("contador")) .tostring

Catch ex As Exception

label1.text="no anda naiden xD"

        End Try

apliquen un try por si las moscas

saludos............

trabajando con mysql y .net

 

logo-mysql

 

no esta mas que decir que trabaja de la misma manera que mssql conector.

 

mysql y .net son excelentes herramientas mysql es rapido y gratis versatil.

para conectar mysql con .net usaremos el conector que probe mysql

http://dev.mysql.com/downloads/connector/net/5.2.html

si usan una version 4.0 de mysql usen la version  1.0 (no da dramas de update usando commanbuilder)

buenos vamos al grano.

1 bajar el conector

2 crear una tabla en mysql (usen ems mysql bajenlo)

http://www.torrentz.com/search?q=ems+mysql hay esta xD tienen que tener licencia para usarlo eso si.

bueno  usaremos el usuario general que es el root y crearemos nuestra cadena de conexion

"Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;"

bueno el pooling lo pongo en false ya que mysql aun no soporta multiples sesiones.

(evita el error many conections)

buena ya tenemos nuesta cadena que se conectara a una db que se llama autos el usuario es root y la pas 123

ahora tenemos que agregar mysql.data.dll que biene en el conector si no esta compilenlo.

dejo el 1.1 aqui por si las moscas listo llegar y usar.

http://rapidshare.com/files/157833268/MySql.Data.dll.html

 

bueno empezemos con el codigo

lo primero se importa el system.data y el Imports MySql.Data.MySqlClient

 

que son los espacios que necesitamos

llenaremos un dataset

 

Dim myconexion As New MySqlConnection("Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;")
      

Dim micomand As New MySqlCommand("select * from usuarios")

        Dim adapter As New MySqlDataAdapter

        Dim midataset As New DataSet()

 

            myconexion.Open()
            adapter.SelectCommand = micomand
            micomand.Connection = myconexion
            adapter.Fill(midataset,"usuarios")
            myconexion.Close()
          

listo ya tenemos midataset llenado con la tabla

  

 

ahora ejecutaremos un sql en una db

Dim myconexion As New MySqlConnection("Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;")

Dim micomand As New MySqlCommand("sql a ejecutar")

 

micomand.Connection = myconexion
        myconexion.Open()
                    micomand.ExecuteScalar()

myconexion.close()

 

bueno eso seria todo

//////////////////

ahora updatiando con mysqlcommanbuilder (avanzado)

pd:mysqlcommandbuilder crea solo los commandos de actualizacion basandose en un dataset previamente cargado.

 

 

Dim adapter As New MySqlDataAdapter

 

dim stringsqlconection="Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;")

dim tabla="usuarios"      

 

Dim myconexion As New MySqlConnection(stringsqlconection)
        Dim micomand As New MySqlCommand("select * from " + tabla + " LIMIT 0;")
        micomand.Connection = myconexion
        Dim commandbuilderx As New MySqlCommandBuilder(adapter)
        Dim midataset As New DataSet()

        adapter.SelectCommand = micomand
        Try
            adapter.Fill(midataset, tabla)
            midataset.Tables(tabla).Merge(dat.Tables(tabla))

            myconexion.Open()
            micomand.CommandText = "select * from " + tabla
            adapter.Update(midataset, tabla)
            myconexion.Close()
            myconexion.Dispose()

        Catch ex As Exception
            Return ex.Message.ToString
            myconexion.Close()
            myconexion.Dispose()
        End Try
       

esto es avanxzado asi que traten de entenderlo   xD. saludos.

aumentar las conexiones tcp ip de windows vista y xp

 

bueno el vista sp1 y el xp traen  como limite 10 conexiones simultanias

afectando los clientes p2p o torrent la solucion es

 

descargar el bitspirit y al menu funciones y seleciona tcip patch y listo se solucionara

 

ojo que en windows vista bienen las dll firmadas digitalmente

si tiene problemas para partir simplemente antes de partir apreten varias veces la tecla f8 y selecionen disable driver firm digital o algo asi xD.

 

aca esta el bit spirit

http://www.167bt.com/intl/

 

bajo su responsabilidad..