Buenas a todos, hace tiempo que he estado adentrándome en el manejo de archivos con python. Lo primero que creé fue una calculadora para hacer cambios de binarios, decimales, octales y hexadecimales (No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta), bastante simple a decir verdad. Esta vez traigo algo un poco más elaborado. Se trata de un algoritmo para cifrar archivos, pero que además comprime el archivo al cifrarlo. Para comprimirlo reduce la cantidad de bytes 0x00 en el archivo. Podría ilustrarse así si lo vemos como en un editor hexadecimal:
Teóricamente podría suceder que el archivo aumente su tamaño (si el caso 2 se repite mucho y el caso 1 no), pero en la práctica es sumamente extraño que pase, casi siempre el archivo va a reducir al menos unos miles de bytes. No estoy seguro si esta forma de compresión ya existía pero hago el aporte igualmente.
Luego de realizar la compresión viene el cifrado, que vendría siendo un algoritmo simple que cifra byte a byte con un contraseña. El algoritmo fue una invención mía, no es XOR aunque se parece un poco. Luego para decodificar es el proceso inverso, creo que no es necesario explicarlo.
El código puede ser fácilmente traducido a otros lenguajes (tal vez me animo a pasarlo a VB6) y no vendría mal para quienes hacen crypters. Inicialmente el código resultaba ser un poco lento, por eso no lo había publicado, pero optimicé el código y mejoró muchísimo. Sin más, les dejo el source:
Para quienes quieran estudiar mejor el algoritmo les dejo el source no optimizado, que hace exactamente lo mismo que el código de arriba pero es más fácil de entender.
Espero alguien pueda darle buen uso, saludos a todos.
Teóricamente podría suceder que el archivo aumente su tamaño (si el caso 2 se repite mucho y el caso 1 no), pero en la práctica es sumamente extraño que pase, casi siempre el archivo va a reducir al menos unos miles de bytes. No estoy seguro si esta forma de compresión ya existía pero hago el aporte igualmente.
Luego de realizar la compresión viene el cifrado, que vendría siendo un algoritmo simple que cifra byte a byte con un contraseña. El algoritmo fue una invención mía, no es XOR aunque se parece un poco. Luego para decodificar es el proceso inverso, creo que no es necesario explicarlo.
El código puede ser fácilmente traducido a otros lenguajes (tal vez me animo a pasarlo a VB6) y no vendría mal para quienes hacen crypters. Inicialmente el código resultaba ser un poco lento, por eso no lo había publicado, pero optimicé el código y mejoró muchísimo. Sin más, les dejo el source:
Para quienes quieran estudiar mejor el algoritmo les dejo el source no optimizado, que hace exactamente lo mismo que el código de arriba pero es más fácil de entender.
Espero alguien pueda darle buen uso, saludos a todos.