Archive

Archive for the ‘Sin categoría’ Category

3 octubre, 2016 Deja un comentario

[ASP.NET][GridView] – Como seleccionar una fila

Introducción

He visto en reiteradas oportunidad que una operación simple como es el caso de operar con una fila de un GridView se puede transformarse en algo complejo, mas que nada motivado por la distintas formas que hay para realizar esta acción.

En este articulo veremos las algunas formas de lograrlo y como difieren las técnicas que se puede aplicarse.

Temas que se tratar:

1- Seleccionar una Row

a- Definiendo un CommandField

b- Usando un ImageButton y CommandName

c- Usando el evento RowCommand

2-Uso de DataKeyNames y DataKeys

a- DataKeyNames con campos Múltiples

Para todos los casos planteados partiremos del mismo gridview, el cual se ira modificando para agregarle opciones y ver los distintos temas.

1- Seleccionar una Row

Existen varias formas de realizar una misma tarea, pero veremos aquí las dos mas simples y directas que se suelen encontrar cuando se necesita seleccionar un registro en el control gridview.

1a- Definiendo un CommandField

Iremos realizando los paso de forma visual así se comprende como proceder, remarcando luego como impacta esto en el html del grid

El primer paso será editar las columnas del GridView hasta visualizar el cuadro con las opciones de CommandField disponibles.

Para este caso en particular se agregara solo la opción de selección. Mediante las flechas laterales se puede posicionar el comando. También se dispone de distintos tipos de representación visual, como ser un Link, Button o Image.

Para este caso usaremos un comando del tipo Image, por lo tanto se deberá definir la propiedad “SelectImageUrl”. Si se define del tipo Link y se quiere cambiar el texto, se usaría la propiedad “SelectText”.

El próximo paso será el de definir el evento de selección, para esto solo marcamos el gridview, y yendo a sus propiedades se podrá activar el evento SelectedIndexChanged

El html resultante debería tener resaltadas las siguiente características

Con estos pasos ya estamos listos para capturar la acción de selección del gridview.

1b – Usando un ImageButton y CommandName

En esta alternativa se hará uso de un TemplateField, se prodece de la misma forma del paso 1a, pero se agrega un item diferente

Una vez que esta el témplate, se adapta modificando directamente en el html, incluyendo de esta forma el control ImageButton.

Es muy importante remarcar que el ImageButton deberá tener la propiedad CommandName=”Select” para que esta ejecute el evento SelectedIndexChanged

A nivel de código de la pagina se encontrara la definición del evento

Hay que aclarar que en este caso se uso un ImageButton para corresponder con la acción del punto 1a, en donde se define una imagen, pero si se requiere de un link solo será cuestión de usar un LinkButton, definiendo en este el CommandName=”Select”, es justamente el CommandName quien define que evento será lanzado al presionarse.

1c- Usando el evento RowCommand

Seguramente a estas alturas se preguntaran que cantidad de formas de hacer lo mismo, asi es, y para completarlo una opción extra.

Resulta que al definir un ImageButton (o LinkButton) en un TemplateItem y usar el CommandName=”Select” se habilita un evento adicionar para poder capturar esta acción, si es que el SelectedIndexChanged no nos convence.

Se trata del evento RowCommand.

Hay un pequeño detalle con este evento y se trata de la definición del CommandArgument para determinar que fila lanza la acción.

[C#]

01.protected void gvPerson_RowCommand(object sender, GridViewCommandEventArgs e)
02.{
03.if (e.CommandName == "Select")
04.{
05.//
06.// Se obtiene indice de la row seleccionada
07.//
08.int index = Convert.ToInt32(e.CommandArgument);
09.
10.//
11.// Obtengo el id de la entidad que se esta editando
12.// en este caso de la entidad Person
13.//
14.int id = Convert.ToInt32(gvPerson.DataKeys[index].Value);
15.
16.}
17.
18.}

[VB.NET]

01.Protected Sub gvPerson_RowCommand(sender As Object, e As GridViewCommandEventArgs)
02.
03.If e.CommandName = "Select" Then
04.'
05.' Se obtiene indice de la row seleccionada
06.'
07.Dim index As Integer = Convert.ToInt32(e.CommandArgument)
08.
09.'
10.' Obtengo el id de la entidad que se esta editando
11.' en este caso de la entidad Person
12.'
13.
14.Dim id As Integer = Convert.ToInt32(gvPerson.DataKeys(index).Value)
15.End If
16.
17.End Sub

En el ejemplo de la pagina WebForm4.aspx, se podrá probar como ambos eventos, tanto el RowCommand y el SelectedIndexChanged, pueden definirse, aunque lo normal es utilizar solo uno de estos.

2 – Uso de DataKeyNames y DataKeys

Una de las mejores técnicas usada para detectar que entidad se esta editando o seleccionado es por medio de id o código que esta tenga asignada, pero como logar hacerlo sin mostrar el identificador al usuario en una columna ?, es justamente el trabajo de estas dos propiedades que se consigue resolver el problema.

Si se presta atención al html este contaba con al definición de esta propiedad de nombre DataKeyNames

Solo debe definirse que campo del origen de datos identifica a la entidad que se esta trabajando.

Cuando se lance el evento solo será cuestión de tomar la row que ejecuta la acción, y de esta, por el índice recuperar el valor del id de la entidad, en este caso el PersonID.

[C#]

01.protected void gvPerson_SelectedIndexChanged(object sender, EventArgs e)
02.{
03.//
04.// Se obtiene la fila seleccionada del gridview
05.//
06.GridViewRow row = gvPerson.SelectedRow;
07.
08.//
09.// Obtengo el id de la entidad que se esta editando
10.// en este caso de la entidad Person
11.//
12.int id = Convert.ToInt32(gvPerson.DataKeys[row.RowIndex].Value);
13.
14.
15.}

[VB.NET]

01.Protected Sub gvPerson_SelectedIndexChanged(sender As Object, e As EventArgs)
02.'
03.' Se obtiene la fila seleccionada del gridview
04.'
05.Dim row As GridViewRow = gvPerson.SelectedRow
06.
07.'
08.' Obtengo el id de la entidad que se esta editando
09.' en este caso de la entidad Person
10.'
11.Dim id As Integer = Convert.ToInt32(gvPerson.DataKeys(row.RowIndex).Value)
12.
13.
14.End Sub

2a- DataKeyNames con campos Múltiples

En este ejemplo solo se utilizo un valor simple para identificar a la entidad, pero el CommandName puede definir mas de un campo de información.

Por ejemplo que sucede si se quiere enviar el PersonId y el Nombre, esto es tan solo un ejemplo para demostrar las funcionalidad, no tiene una aplicación práctica en este caso, ya que con solo el PersonID seria mas que suficiente.

Para definir el DataKeyNames en el grid es tan simple como separar los campos por una coma.

y en el código solo se toma el valor de la propiedad Values

[C#]

01.protected void gvPerson_SelectedIndexChanged(object sender, EventArgs e)
02.{
03.//
04.// Se obtiene la fila seleccionada del gridview
05.//
06.GridViewRow row = gvPerson.SelectedRow;
07.
08.//
09.// Obtengo el id y el nombre  de la entidad que se esta editando
10.// en este caso de la entidad Person
11.//
12.int id = Convert.ToInt32(gvPerson.DataKeys[row.RowIndex].Values["PersonID"]);
13.
14.string nombre = Convert.ToString(gvPerson.DataKeys[row.RowIndex].Values["FirstName"]);
15.
16.
17.}

[VB.NET]

01.Protected Sub gvPerson_SelectedIndexChanged(sender As Object, e As EventArgs)
02.'
03.' Se obtiene la fila seleccionada del gridview
04.'
05.Dim row As GridViewRow = gvPerson.SelectedRow
06.
07.'
08.' Obtengo el id y el nombre  de la entidad que se esta editando
09.' en este caso de la entidad Person
10.'
11.Dim id As Integer = Convert.ToInt32(gvPerson.DataKeys(row.RowIndex).Values("PersonID"))
12.
13.Dim nombre As String = Convert.ToString(gvPerson.DataKeys(row.RowIndex).Values("FirstName"))
14.
15.
16.End Sub
Categorías:Sin categoría

[ASP.NET][GRIDVIEW] – COMO SELECCIONAR UNA FILA

7 febrero, 2013 4 comentarios

 

Introducción

He visto en reiteradas oportunidad que una operación simple como es el caso de operar con una fila de un GridView se puede transformarse en algo complejo, mas que nada motivado por la distintas formas que hay para realizar esta acción.

En este articulo veremos las algunas formas de lograrlo y como difieren las técnicas que se puede aplicarse.

Temas que se tratar:

1- Seleccionar una Row

a- Definiendo un CommandField

b- Usando un ImageButton y CommandName

c- Usando el evento RowCommand

2-Uso de DataKeyNames y DataKeys

   a- DataKeyNames con campos Múltiples

Para todos los casos planteados partiremos del mismo gridview, el cual se ira modificando para agregarle opciones y ver los distintos temas.

 

1- Seleccionar una Row

Existen varias formas de realizar una misma tarea, pero veremos aquí las dos mas simples y directas que se suelen encontrar cuando se necesita seleccionar un registro en el control gridview.

1a- Definiendo un CommandField

Iremos realizando los paso de forma visual así se comprende como proceder, remarcando luego como impacta esto en el html del grid

El primer paso será editar las columnas del GridView hasta visualizar el cuadro con las opciones de CommandField disponibles.

Para este caso en particular se agregara solo la opción de selección. Mediante las flechas laterales se puede posicionar el comando. También se dispone de distintos tipos de representación visual, como ser un Link, Button o Image.

Para este caso usaremos un comando del tipo Image, por lo tanto se deberá definir la propiedad “SelectImageUrl”. Si se define del tipo Link y se quiere cambiar el texto, se usaría la propiedad “SelectText”.

El próximo paso será el de definir el evento de selección, para esto solo marcamos el gridview, y yendo a sus propiedades se podrá activar el evento SelectedIndexChanged

El html resultante debería tener resaltadas las siguiente características

Con estos pasos ya estamos listos para capturar la acción de selección del gridview.

 

1b – Usando un ImageButton y CommandName

En esta alternativa se hará uso de un TemplateField, se prodece de la misma forma del paso 1a, pero se agrega un item diferente

Una vez que esta el témplate, se adapta modificando directamente en el html, incluyendo de esta forma el control ImageButton.

Es muy importante remarcar que el ImageButton deberá tener la propiedad CommandName=”Select” para que esta ejecute el evento SelectedIndexChanged

A nivel de código de la pagina se encontrara la definición del evento

Hay que aclarar que en este caso se uso un ImageButton para corresponder con la acción del punto 1a, en donde se define una imagen, pero si se requiere de un link solo será cuestión de usar un LinkButton, definiendo en este el CommandName=”Select”, es justamente el CommandName quien define que evento será lanzado al presionarse.

 

1c- Usando el evento RowCommand

Seguramente a estas alturas se preguntaran que cantidad de formas de hacer lo mismo, asi es, y para completarlo una opción extra.

Resulta que al definir un ImageButton (o LinkButton) en un TemplateItem y usar el CommandName=”Select” se habilita un evento adicionar para poder capturar esta acción, si es que el SelectedIndexChanged no nos convence.

Se trata del evento RowCommand.

Hay un pequeño detalle con este evento y se trata de la definición del CommandArgument para determinar que fila lanza la acción.

[C#]

 

01.protected void gvPerson_RowCommand(object sender, GridViewCommandEventArgs e)
02.{
03.if (e.CommandName == "Select")
04.{
05.//
06.// Se obtiene indice de la row seleccionada
07.//
08.int index = Convert.ToInt32(e.CommandArgument);
09. 
10.//
11.// Obtengo el id de la entidad que se esta editando
12.// en este caso de la entidad Person
13.//
14.int id = Convert.ToInt32(gvPerson.DataKeys[index].Value);
15. 
16.}
17. 
18.}

 

[VB.NET]

01.Protected Sub gvPerson_RowCommand(sender As Object, e As GridViewCommandEventArgs)
02. 
03.If e.CommandName = "Select" Then
04.'
05.' Se obtiene indice de la row seleccionada
06.'
07.Dim index As Integer = Convert.ToInt32(e.CommandArgument)
08. 
09.'
10.' Obtengo el id de la entidad que se esta editando
11.' en este caso de la entidad Person
12.'
13. 
14.Dim id As Integer = Convert.ToInt32(gvPerson.DataKeys(index).Value)
15.End If
16. 
17.End Sub

En el ejemplo de la pagina WebForm4.aspx, se podrá probar como ambos eventos, tanto el RowCommand y el SelectedIndexChanged, pueden definirse, aunque lo normal es utilizar solo uno de estos.

 

2 – Uso de DataKeyNames y DataKeys

Una de las mejores técnicas usada para detectar que entidad se esta editando o seleccionado es por medio de id o código que esta tenga asignada, pero como logar hacerlo sin mostrar el identificador al usuario en una columna ?, es justamente el trabajo de estas dos propiedades que se consigue resolver el problema.

Si se presta atención al html este contaba con al definición de esta propiedad de nombre DataKeyNames

Solo debe definirse que campo del origen de datos identifica a la entidad que se esta trabajando.

Cuando se lance el evento solo será cuestión de tomar la row que ejecuta la acción, y de esta, por el índice recuperar el valor del id de la entidad, en este caso el PersonID.

[C#]

01.protected void gvPerson_SelectedIndexChanged(object sender, EventArgs e)
02.{
03.//
04.// Se obtiene la fila seleccionada del gridview
05.//
06.GridViewRow row = gvPerson.SelectedRow;
07. 
08.//
09.// Obtengo el id de la entidad que se esta editando
10.// en este caso de la entidad Person
11.//
12.int id = Convert.ToInt32(gvPerson.DataKeys[row.RowIndex].Value);
13. 
14. 
15.}

[VB.NET]

01.Protected Sub gvPerson_SelectedIndexChanged(sender As Object, e As EventArgs)
02.'
03.' Se obtiene la fila seleccionada del gridview
04.'
05.Dim row As GridViewRow = gvPerson.SelectedRow
06. 
07.'
08.' Obtengo el id de la entidad que se esta editando
09.' en este caso de la entidad Person
10.'
11.Dim id As Integer = Convert.ToInt32(gvPerson.DataKeys(row.RowIndex).Value)
12. 
13. 
14.End Sub

 

2a- DataKeyNames con campos Múltiples

En este ejemplo solo se utilizo un valor simple para identificar a la entidad, pero el CommandName puede definir mas de un campo de información.

Por ejemplo que sucede si se quiere enviar el PersonId y el Nombre, esto es tan solo un ejemplo para demostrar las funcionalidad, no tiene una aplicación práctica en este caso, ya que con solo el PersonID seria mas que suficiente.

Para definir el DataKeyNames en el grid es tan simple como separar los campos por una coma.

y en el código solo se toma el valor de la propiedad Values

[C#]

01.protected void gvPerson_SelectedIndexChanged(object sender, EventArgs e)
02.{
03.//
04.// Se obtiene la fila seleccionada del gridview
05.//
06.GridViewRow row = gvPerson.SelectedRow;
07. 
08.//
09.// Obtengo el id y el nombre  de la entidad que se esta editando
10.// en este caso de la entidad Person
11.//
12.int id = Convert.ToInt32(gvPerson.DataKeys[row.RowIndex].Values["PersonID"]);
13. 
14.string nombre = Convert.ToString(gvPerson.DataKeys[row.RowIndex].Values["FirstName"]);
15. 
16. 
17.}

[VB.NET]

01.Protected Sub gvPerson_SelectedIndexChanged(sender As Object, e As EventArgs)
02.'
03.' Se obtiene la fila seleccionada del gridview
04.'
05.Dim row As GridViewRow = gvPerson.SelectedRow
06. 
07.'
08.' Obtengo el id y el nombre  de la entidad que se esta editando
09.' en este caso de la entidad Person
10.'
11.Dim id As Integer = Convert.ToInt32(gvPerson.DataKeys(row.RowIndex).Values("PersonID"))
12. 
13.Dim nombre As String = Convert.ToString(gvPerson.DataKeys(row.RowIndex).Values("FirstName"))
14. 
15. 
16.End Sub

 

Categorías:ASPX, Sin categoría

¡Hola mundo!

4 noviembre, 2010 Deja un comentario

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Categorías:Sin categoría

2 programadores de microcontroladores

31 agosto, 2010 Deja un comentario

¿Alguien que le interese este puesto?

 

2 programadores de microcontroladores

 

Para importante industria de manufactura en Electrónica ubicada en Zona Norte, se requiere de dos Licenciados en Sistemas con sólida formación técnica.
Puede ser Técnico electrónico con orientación en sistemas, que acredite sólidos antecedentes en Programación de microcontroladores y aplicaciones para PC
Con dominio de Herramientas
C++
Visual Basic 6.
Lenguajes de bajo nivel (assembler, PIC).
Protocolos (desarrollo de aplicaciones de comunicación via puertos serie o USB).
Conocimientos de configuración y gestión de redes (en entorno Windows).
El puesto es efectivo no temporario.
Con amplias posibilidades de crecimiento.
Se requiere una personalidad firme, segura para tratar con clientes y escuchar sus requerimientos para luego programarlos y aplicarlos.

Categorías:Sin categoría

Trata de PHP FormMail Generator – A tool to create ready-to-use web forms in a flash | Generator Demo

25 enero, 2010 Deja un comentario

Antes me complicaba programando la pagina de contacto.

Ahora estoy optando por esta opción.

Cita

PHP FormMail Generator – A tool to create ready-to-use web forms in a flash | Generator Demo

Categorías:Sin categoría

Problemas con MCAFEE – Herramienta de eliminación de McAfee (mcrem)

16 diciembre, 2009 Deja un comentario
Categorías:Sin categoría

Talking about Una clase sencilla para encriptar cadenas de texto. – Articulos

14 diciembre, 2009 Deja un comentario

 

Necesitaba solucionar este tema y he encontrado esta posible solución.

 

Una clase sencilla para encriptar cadenas de texto. – Articulos

Uno de los problemas clásicos con los que nos enfrentamos los programadores es el de encriptar los datos. La cantidad de situaciones en las que necesitamos encriptar los datos es incontable. 

Normalmente los datos se almacenan en una base de datos, y esta suele ser segura, pero las claves de conexión se encuentran en archivos de texto planos, XML … Incluso hay muchas bases de datos en las que la información de las claves con las que los usuarios se conectan a los sistemas corporativos estan sin encriptar, con lo que además podemos llegar a comprometer la seguridad de todo nuestro sistema.

Existen complejos algoritmos que permiten la encriptación de datos y que garantizan matemáticamente que nadie los puede desencriptar, como es el caso de MD5, utilizado para emitir certificados de seguridad en sistemas SSL. Tambien existen componentes de software que realizan el trabajo de encriptación por nosotros.

Estas soluciones tienen su parte negativa, por un lado los algoritmos seguros no se pueden desencriptar, por lo que no siempre son utiles. Por otro lado los componentes de software desarrollados por compañias pueden llegar a ser muy caros y además es necesario instalarlos en el los servidores, cosa que no siempre es posible. 

La solución son los sistemas de clave pública-privada. Son sistemas en los que la encriptación se basa en un par de claves, con una clave se encriptan los datos y sólo se pueden desencriptar si se conoce la otra.

Nuestra clase esta basada en esta idea. Vamos a desarrollar una clase que escripta cadena basandose en un patrones. La clase está escrita en VB.NET, pero al utilizar unicamente tipos comunes podemos exportarla facimente a cualquier otro lenguaje.

Lo primero que vamos a hacer es crear la clase a la que vamos a llamar Encriptador.

Public Class Encriptador

End Class

La idea de esta clase es definir dos patrones, cada uno con todos los caracteres del idioma, de la A-Z en mayúscula y minuscula, los numeros … y cada uno en un orden diferente y aleatorio. Después aplicaremos un sencillo algoritmo que nos haga correcponder cada elemento de un patrón con otro.

Lo primero que necesitamos definir los patrones,para ello tecleamos el abecedario  y los números en una cadena de texto como esta:

ABCDEFGHIJKLMNÑOPQRSTVWXYZabcdefghijklmnñopqrstvwxyz1234567890

Y ahora la desordenamos hasta que quede ilegible. Asignamos estas cadenas a nuestras cadena de patrón. Definimos las cadenas a nivel de instancia.

Tambien declaramos dos métodos, uno para encriptar la cadena y otro para encriptar una única letra, que además recibe otros dos parámetros, uno denominado variable, que representa la longitud de la cadena a encriptar y otro a_indice, que representa el índice del caracter dentro de la cadena. Con ellas construiremos un sencillo algoritmo, que evitará que alguien pueda establecer una relación del tipo de "la a es la j encriptada" y que hará que cada letra se encripte de modo diferente dependiendo de la longitud de la cadena y de donde esté situada dentro de ella. 

Public Class Encriptador

Private patron_busqueda As String = "0ABIZ2ÑebDNOEcwGl6oSñixq1…"
Private Patron_encripta As String = "vQÑO8dk1VgIPZxAR3UsLD6XBz…"
‘Los patrones están aquí sin terminar por falta de espacio.

Public Function EncriptarCadena (ByVal cadena As String) As String

End Function

Private Function EncriptarCaracter (ByVal caracter As String, _
                                                            ByVal variable As Integer, _
                                                            ByVal a_indice As Integer) As String


End Function

End Class  

 

Ahora escribimos el código para EncriptarCadena, que sencillamente recorre la cadena letra a letra invocando al método de encriptar caracter, pasandole como parémetros el caracter, la longitud de la cadena y el índice de la iteración. El código es muy sencillo.

Public Function

EncriptarCadena (ByVal cadena As String) As String

   Dim idx As Integer  
   Dim result
As String
 
   For idx = 0
To cadena.Length – 1   
     
result += EncriptarCaracter(cadena.Substring(idx, 1), cadena.Length, idx)
  
Next 
   Return
result

End Function

   Ahora tenemos que escribir el método EncriptarCaracter, como hemos visto al declarar el método, recibe tres parámetros, el caracter que queremos encriptar, un entero variable (que será la longitud de la cadena a encriptar) y el indice que ocupa el caracter a encriptar dentro de la cadena que queremos encriptar. Esto nos va a permitir escribir un sencillo algoritmo para devolver el índice que le va a corresponder a nuestro caracter dentro del patron encriptado.

 Private Function

EncriptarCaracter (ByVal caracter As String, _
                                                             ByVal variable As Integer, _
                                                            ByVal a_indice As Integer)
As String
   
   Dim caracterEncriptado As String, indice As Integer

   If patron_busqueda.IndexOf(caracter) <> -1 Then 
      indice =  (patron_busqueda.IndexOf(caracter) + variable + a_indice) Mod patron_busqueda.Length 
      Return
Patron_encripta.Substring(indice, 1)
   End If

   Return caracter

 End Function

   La función busca el índice de mi caracter en la cadena denominada patron_busqueda, si lo encontramos (recordar que tenemos todas las letras y números), lo encriptamos, si no lo encontramos devolvemos el mismo caracter que hemos recibido como parámetro.

   La encriptación en muy sencilla, ¡pero muy efectiva!, encontramos el lugar que ocupa dentro del patron de busqueda el caracter, le sumamos la longitud de la cadena y le sumamos por último el lugar que ocupa el caracter que estamos encriptando dentro de ella. Obtenemos el caracter correspondiente al índice calculado dentro del patron_encriptado. De este modo conseguimos que el mismo caracter se encripte de forma diferente en cada cadena, y que una pequeña modificación en la cadena cambie totalmente la encriptación.

   Este algoritmo plantea un problema, ¿que ocurre cuando la suma de estos tres parámetro es superior a la longitud de los patrones?. Estariamos intentando estraer un elemento que supera los límites de las cadenas patrón. Para solucionar este problema trabajamos con módulos matemáticos. La operación módulo devuelve el resto de la división entera entre dos números. De este modo cuando nuestro índice supera los limites de la cadena, volvemos a la posición inicial.

Ejemplos con operaciones de modulos

15 Mod 20 ==> devuelve 15

20 Mod 20 ==> devuelve 0

21 Mod 20 ==> devuelve 1

45 Mod 20 ==> devuelve 5

   Ya tenemos nuestra clase que encripta cadenas, vamos a escribir una pequeña aplicación de consola que pruebe nuestra clase.

Module Encriptador_Test

Sub Main()

     Dim cadena As String 
     Dim enc As Encriptador 
     enc =New Encriptador() 
     Do 
         Console.WriteLine("Introduzca la cadena que quiera encriptar:")  
        
cadena = Console.ReadLine() 
         Console.WriteLine( " ==> " + enc.EncriptarCadena(cadena)) 
     Loop While cadena <> ""  

End Sub

End Module

   Vamos a ejecutar nuestro programa, y probamos a encriptar varias cadenas.


C:\VB.net\Encriptar\Encriptar\bin>encriptar.exe

Introduzca la cadena que quiera encriptar:
Hola mundo! ==> 9QPz hpKIZ!

Introduzca la cadena que quiera encriptar:
http://www.Devjoker.com ==> feo.Frfxy¥hb.jii

Introduzca la cadena que quiera encriptar:
La misma letra varia aaaaaaaa! ==> YB WMb¤I JC¥yH Q¥CgP v7Ky8qj4!

   Ahora necesitamos escribir lo métodos para desencriptar. Las declaraciones son parecidas.

 

Public Function DesEncriptarCadena(ByVal cadena As String) As String

End Function

Private Function DesEncriptarCaracter(ByVal caracter As String, ByVal variable As Integer, _
                                                                   ByVal a_indice As Integer) As String


End Function
  

 

   La implementación de los métodos tambien es sencilla, si bien el método de desencriptar caracter es algo más complicado, debido a la posibilidad de encontrar índices negativos. Aún así resultan faciles de comprender.

 

 Public Function DesEncriptarCadena(ByVal cadena As String) As String

    Dim idx As Integer
    Dim result As String

       For idx = 0 To cadena.Length – 1
          result+=DesEncriptarCaracter(cadena.Substring(idx, 1),cadena.Length,idx)
       Ne
xt
      
return result
 End Function

 Private Function DesEncriptarCaracter(ByVal caracter As String, _
                                                                   ByVal variable As Integer, _
                                                                   ByVal a_indice As Integer) As String

    Dim indice As Integer

    If Patron_encripta.IndexOf(caracter) <> -1 Then
     
If (Patron_encripta.IndexOf(caracter) – variable – a_indice) > 0 Then
         indice = (Patron_encripta.IndexOf(caracter) – variable – a_indice) Mod Patron_encripta.Length
     
Else
         ‘La línea está cortada por falta de espacio

        
indice = (patron_busqueda.Length) + ((Patron_encripta.IndexOf(caracter)
                                                                 – variable – a_indice) Mod Patron_encripta.Length)
     
End If
     
indice = indice Mod Patron_encripta.Length
     
Return patron_busqueda.Substring(indice, 1)
    Else
     
Return caracter
    End If

 End Function
  

   Con esto ya tenemos escrito todo el código necesario. Como vereis no se trata de un sistema excesivamente seguro, pero para poder desencriptar nuestras cadenas es necesario conocer dos patrones de 64 caracteres, que además han sido generadas de forma aleatoria. Además este código es facilmente portable a cualquier plataforma, dado que se basa completamente en tipos sencillos, cadenas de caracteres, por lo que reescribir el codigo para una clase Java es muy facil.

    Podemos encriptar datos de una forma mas segura a través de algoritmos estandar como TRIPLEDES, en este articulo explicamos como : http://www.devjoker.com/contenidos/Articulos/355/TripleDES-Un-ejemplo-practico-en-C.aspx

   El código necesario para que nuestra aplicación de consola desencripte es trivial, por lo que no lo comentaremos.

   Bueno, espero que oa haya parecido interesante el articulo, saludos y hasta la proxima.

Categorías:Sin categoría