• Jueves 28 de Marzo de 2024, 19:03

Autor Tema:  Re: Informacion sobre la creacion de algoritmos  (Leído 9066 veces)

tenesor

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Informacion sobre la creacion de algoritmos
« en: Martes 12 de Febrero de 2002, 16:46 »
0
Hola a quien le pueda interesar...

Actualmente he estado haciendo un programa MUY SIMPLE para encriptar/desencriptar archivos. Lo estoy desarrollando en C++, Kylix (Delphi y C++ para linux) y perl y para encriptar y desencriptar funciona de la siguiente manera. Al usuario se le pide una clave y el archivo a encriptar. El programa recorre byte por byte el archivo y hace un XOR con la clave y la linea que corresponda.

Ahora van mis preguntas...
Como habeis visto es muy simple y me gustaria aprender mas sobre el desarrollo de aplicaciones de encriptacion y supongo que para ello necesitare saber mas sobre algoritmos y su diseño, alguien me podria indicar paginas-textos-loquesea que no sea kriptopolis ni el libro de "criptografia y seguridad de computadoras"?

Como podría reforzar el programa para mejorarlo?

Muchas gracias por la atencion.
Salud,
   Tenesor
Que el toro estoque al matador, que el preso enciere al guardián, que solo sean de cerveza los tanques, que el pez pesque al pescador y que el tigre dome al domador, que la television se prohiba y el hachis se legalice, que africa sea tierra mágica y no trágica... cambiando el mundo [NS]

Mauricio

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Informacion sobre la creacion de algoritmos
« Respuesta #1 en: Martes 12 de Febrero de 2002, 18:08 »
0
Aqui va un ejemplo

Private Sub Form_Load()
Dim s As String
s = "Hola!"
'//Codifica
XORStringEncrypt s, "MiClave"
Show
Print "Codificado: "; s
'//Decodifica
XORStringEncrypt s, "MiClave"
Print "Decodificado: "; s
End Sub

Private Sub XORStringEncrypt(s As String, PassWord As String)
Dim n As Long
Dim i As Long
Dim Char As Long

n = Len(PassWord)
For i = 1 To Len(s)
Char = Asc(Mid$(PassWord, (i Mod n) - n * ((i Mod n) = 0), 1))
Mid$(s, i, 1) = Chr$(Asc(Mid$(s, i, 1)) Xor Char)
Next
End Sub
Saludos. Mauricio
Bs.As - Argentina

TxaKy

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Informacion sobre la creacion de algoritmos
« Respuesta #2 en: Martes 12 de Febrero de 2002, 19:05 »
0
Mirate esta direccion:
http://sourceforge.net/projects/cryptopp/

Es una biblioteca para criptografia y ademas esta hecha en c++. Supongo que al menos podras sacar ideas del codigo fuente.

tenesor

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Informacion sobre la creacion de algoritmos
« Respuesta #3 en: Martes 12 de Febrero de 2002, 19:32 »
0
Mauricio: Thnx por el codigo (aunque este en VB:)). Es una forma interesante de hacer una encriptacion, pero si me lo permites aqui va una pequeña mejora a ese programa, (no en VB, hace mucho que no lo toco). Si en vez de tratar el archivo como char, lo tratamos como un binario (como era en VB???) ampliariamos el campo a cualquier tipo de archivo (texto plano, audio, video, imagen, etc). Y mientras escribia el codigo se me ocurrio una forma de reforzar el programa, obligando al usuario a que la contraseña sea mayor de 5 y que al menos contenga un caracter especial (como una @, # o algo asi). De todas formas te agradezco mucho ese codigo, intentare pasarlo a C.

TxaKy: Vaya, increible. Desde luego ideas si que saco, pero me parece que eso se me va un poco de lejos (al menos de momento....:))

En definitiva, THNX a los dos

Saludos,
   Tenesor
Que el toro estoque al matador, que el preso enciere al guardián, que solo sean de cerveza los tanques, que el pez pesque al pescador y que el tigre dome al domador, que la television se prohiba y el hachis se legalice, que africa sea tierra mágica y no trágica... cambiando el mundo [NS]

Excalibur

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Informacion sobre la creacion de algoritmos
« Respuesta #4 en: Domingo 10 de Marzo de 2002, 22:01 »
0
Muy sencillo el programa, pero interesante eso de desarrollar criptografia propia ya que es dificil encontrar un algoritmo que iguale o supere a los ya conocidos (RSA, AES, Curvas elipticas, etc) pero como entrenamiento me parece estupendo.

Bueno entremos en materia. Para que el XOR sea eficiente (al menos para proteger informacion de tu sobrinito de 10 años) debes hacer un hashing (revoltura) a la clave (serán unas 40-80 lineas de código en C/C++) para que independientemente del tamaño de la clave de entrada obtengas una longitud fija de clave de entre 40 y 256 bits de longitud segun el tipo de hash que hayas utilizado. No olvides antes de encriptarlo aplicarle una compresión (Lev-Zip, Huffman, etc) para eliminar las propiedades estadísticas del lenguaje. Otra cosa que aumenta la fuerza del algoritmo es el encadenamiento de claves, es decir divide el archivo a encriptar en bloques de igual tamaño a la longitud de la clave resultante del hashing, encripta  el primero, lo que resulte lo utilizarás como clave para el siguente bloque y así hasta que termines. Te aseguro que con esto incrementarás la fuerza del algoritmo por mucho.

Otra cosa muy importante en cuanto a criptografía se refiere es el diseño del programa, es decir trabajar en base a criterios de rechazo en lugar de aceptación (como se hace habitualmente), colocar banderas en cada punto de paso entre procedimientos o bloques y rechazar cualquier entrada de datos no valida o extraña en cualquier punto del programa para evitar que truene. Esto tiene la ventaja de que lo hace un poco mas dificil de reventar para hackers y demás. En otras palabras tu programa debe ser robusto hacia modificaciones por parte de terceros en el archivo binario y sobre todo que sea lo suficientemente fuerte para que una vez en memoria no se puedan introducir datos intermedios o desplazar procedimientos que puedan comprometer el funcionamiento de este.

Si deseas mas informacion enviame un correo a: [email:gzuo8pj0]duque_infernal@yahoo.com.mx[/email:gzuo8pj0]
Excalibur

akashico

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Informacion sobre la creacion de algoritmos
« Respuesta #5 en: Martes 9 de Abril de 2002, 12:17 »
0
Mira en esta pagina, ya que hay cosas interesantes de programacion en varios campos, uno de ellos algoritmos y metodologia, que creo es lo que preguntas
Programacion en castellano
Si puedes pensarlo, puedes programarlo

Dux

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Informacion sobre la creacion de algoritmos
« Respuesta #6 en: Martes 6 de Mayo de 2003, 18:14 »
0
hola, yo estoy estudiando criptologia, lo mejorcito por lo que me dicen en la facultad es un libro de Douglas R. Stinson llamado Cryptografy Theory and Practice
en español tengo entendido que no hay casi anda y menos que este bueno...
cualkier cosa escribime a dux@uol.com.ar y hablamos un poko.

 
Citar
Originalmente publicado por tenesor
Hola a quien le pueda interesar...

Actualmente he estado haciendo un programa MUY SIMPLE para encriptar/desencriptar archivos. Lo estoy desarrollando en C++, Kylix (Delphi y C++ para linux) y perl y para encriptar y desencriptar funciona de la siguiente manera. Al usuario se le pide una clave y el archivo a encriptar. El programa recorre byte por byte el archivo y hace un XOR con la clave y la linea que corresponda.

Ahora van mis preguntas...
Como habeis visto es muy simple y me gustaria aprender mas sobre el desarrollo de aplicaciones de encriptacion y supongo que para ello necesitare saber mas sobre algoritmos y su diseño, alguien me podria indicar paginas-textos-loquesea que no sea kriptopolis ni el libro de "criptografia y seguridad de computadoras"?

Como podría reforzar el programa para mejorarlo?

Muchas gracias por la atencion.
Salud,
   Tenesor