elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Criptografía - Cifrado por sustitución
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Criptografía - Cifrado por sustitución  (Leído 8,670 veces)
hadree

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Criptografía - Cifrado por sustitución
« en: 22 Noviembre 2010, 17:19 pm »

En criptografía, el cifrado por sustitución es un método de cifrado por el que unidades de texto plano son sustituidas con texto cifrado siguiendo un sistema regular; las "unidades" pueden ser una sola letra (el caso más común), pares de letras, tríos de letras, mezclas de lo anterior, entre otros.

El receptor descifra el texto realizando la sustitución inversa.

Los cifrados por sustitución son comparables a los cifrados por transposición. En un cifrado por transposición, las unidades del texto plano son cambiadas usando una ordenación diferente y normalmente bastante compleja, pero las unidades en sí mismas no son modificadas. Por el contrario, en un cifrado por sustitución, las unidades del texto plano mantienen el mismo orden, lo que se cambia son las propias unidades del texto plano.

Existen diversos tipos de cifrados por sustitución. Si el cifrado opera sobre letras simples, se denomina cifrado por sustitución simple; un cifrado que opera sobre grupos de letras se denomina, poligráfico. Un cifrado monoalfabético usa una sustitución fija para todo el mensaje, mientras que un cifrado polialfabético usa diferentes sustituciones en diferentes momentos del mensaje-por ejemplo los homófonos, en los que una unidad del texto plano es sustituida por una de entre varias posibilidades existentes para el texto cifrado.

En esta ocasión vamos a realizar un pequeño programa para implementar el cifrado por sustitución simple, no obstante es posible con unas pocas modificaciones implementar un sistema diferente.

Este sistema es muy simple y puede ser fácilmente descifrado, pero sirve como base para aprender a realizar la sustitución de caracteres en cadenas y de paso realizar nuestro primer programa para codificar textos....:D

Aunque se implementa solo la versión simple (que opera sobre letras simples), vamos a realizar la sustitución de las distintas letras, del abecedario:

"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"

Por una selección de caracteres del conjunto unicode :

"א", "η", "Σ", "Τ", "ϊ", "ψ", "φ", "σ", "ב", "ג", "ה", "ז", "Ϧ", "ﬥ", "ﬢ", "ﬠ", "ﬨ", "ף", "", "ם", "ן", "Ϣ", "Ϩ", "Ϝ", "ס", "Ϯ", "ך"

Este sería un ejemplo:

Código:
Este es un texto de prueba que se va a codificar para probar
el algoritmo de sustitución.

Código:
ϊםןϊڊϊםڊϢﬥڊןϊסןﬠڊΤϊڊﬨұϢϊηאڊףϢϊڊםϊڊϨאڊאڊΣﬠΤבψבΣאұڊﬨאұאڊﬨұﬠηאұڊϊ
זڊאזφﬠұבןϦﬠڊΤϊڊםϢםןבןϢΣבóﬥ.

Y bueno aquí tenéis el código del ejemplo:

Código:

Public Class Form1

    ''**************************************************
    ''VARIABLES GLOBALES
    ''**************************************************
    Dim Chars1() As String = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "}
    Dim Chars2() As String = {"א", "η", "Σ", "Τ", "ϊ", "ψ", "φ", "σ", "ב", "ג", "ה", "ז", "Ϧ", "ﬥ", "ﬢ", "ﬠ", "ﬨ", "ף", "ұ", "ם", "ן", "Ϣ", "Ϩ", "Ϝ", "ס", "Ϯ", "ך", "ڊ"}

    ''**************************************************
    ''EVENTOS
    ''**************************************************

    Private Sub btnBorrarTodo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBorrarTodo.Click
        borrarTodo()
    End Sub

    Private Sub btnSubirResultado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubirResultado.Click
        subirResultado()
    End Sub

    Private Sub btnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalcular.Click
        calcular()
    End Sub

    ''**************************************************
    ''SUBPROCEDIMIENTOS y FUNCIONES
    ''**************************************************

    Sub borrarTodo()
        txtOrigen.Text = ""
        txtDestino.Text = ""
    End Sub

    Sub subirResultado()
        txtOrigen.Text = txtDestino.Text
        txtDestino.Text = ""
    End Sub

    Sub calcular()
        ''
        If txtOrigen.Text <> "" Then
            ''
            If opCodificar.Checked Then
                ''CODIFICAR
                txtDestino.Text = CodCaracteres(txtOrigen.Text)
                ''
            Else
                ''DECODIFICAR
                txtDestino.Text = DecodCaracteres(txtOrigen.Text)
                ''
            End If
            ''
        End If
        ''
    End Sub

    ''**************************************************

    Function CodCaracteres(ByVal str As String) As String
        ''
        Dim k As Integer = 0
        Dim c1 As String = ""
        Dim c2 As String = ""
        ''
        str = str.ToLower
        ''
        While k < Chars1.Length
            ''
            c1 = Chars1(k)
            c2 = Chars2(k)
            ''
            While str.Contains(c1) = True
                str = str.Replace(c1, c2)
            End While
            ''
            k += 1
            ''
        End While
        ''
        Return str
        ''
    End Function

    Function DecodCaracteres(ByVal str As String) As String
        ''
        Dim k As Integer = 0
        Dim c1 As String = ""
        Dim c2 As String = ""
        ''
        While k < Chars2.Length
            ''
            c1 = Chars1(k)
            c2 = Chars2(k)
            ''
            While str.Contains(c2) = True
                str = str.Replace(c2, c1)
            End While
            ''
            k += 1
            ''
        End While
        ''
        Return str
        ''
    End Function

    ''**************************************************
    
End Class


Y por último aquí tenéis el ejecutable de prueba:

Unicoder.zip



.


« Última modificación: 22 Noviembre 2010, 17:22 pm por hadree » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Criptografía - Cifrado por sustitución
« Respuesta #1 en: 22 Noviembre 2010, 17:55 pm »

Pero creo que sería mejor implementarle el metodo que usa el cifrado de vigenere...


En línea

Te vendería mi talento por poder dormir tranquilo.
hadree

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Criptografía - Cifrado por sustitución
« Respuesta #2 en: 22 Noviembre 2010, 19:14 pm »

Bueno es solo para empezar más adelante pueden añadirse otros algoritmos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Criptoanalizador del cifrado generico monoalfabetico por sustitucion
Scripting
lShadowl 0 3,944 Último mensaje 26 Febrero 2011, 14:23 pm
por lShadowl
opcion batch o vbs en sustitucion de schtasks.
Scripting
guajolote_vengador 9 9,372 Último mensaje 26 Marzo 2012, 07:26 am
por Eleкtro
Cifrado por sustitucion ASM
ASM
capiil4d 1 2,896 Último mensaje 19 Junio 2013, 11:23 am
por Eternal Idol
mejor criptografia de cifrado y decifrado RC4 vs AES u otro ?
Desarrollo Web
bacanzito 0 1,934 Último mensaje 26 Septiembre 2013, 03:18 am
por bacanzito
Sustitución directa del EIP
Bugs y Exploits
Lodos76 3 3,302 Último mensaje 10 Marzo 2014, 00:34 am
por Lodos76
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines