Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/01/2013, 00:02
DoHITB
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Respuesta: Encriptar archivos antes de subirlos al servidor

Buenas!

Como poder encriptar supongo que se puede...

Solo tendrías que obtener el contenido del fichero y aplicarle una función de encriptación.

El problema es que si aplicas una función de encriptación irreversible (se que tiene un nombre específico, pero no me acuerdo y siempre los confundo!) como SHA1, SHA256, etc no podrás recuperar el contenido original a no ser que lo guardes en otro lado (con lo que te quedas en las mismas).

Por tanto, tendrías que aplicar un algoritmo que fuera reversible (como base64, o aplicar alguno que inventes tú; yo cuando estudiaba informática tuve una práctica basada en el método BIGENERE); entonces a la hora de ejecutar tendrías que deshacer el algoritmo y ejecutar... y luego volver a encriptar.

Por si te pica la curiosidad del BIGENERE "modificado" que hicimos, se basa en lo siguiente:

Código:
 - Tenemos la entrada que queremos encriptar (E)
 - Tenemos un pass privado generado por nosotros (P)

Entonces, obtenemos una longitud L tal que:

Si longitud(E)>longitud(P), L=longitud(E)
Si longitud(E)<longitud(P), L=longitud(P)

Ahora, hacemos un bucle de i=0 hasta L, y en cada iteración, hacemos:

- Obtenemos el valor ASCII del caracter i de E y le sumamos (o restamos) el valor ASCII del caracter i de P. (X)

 - Operamos X para que quede dentro del rango de caracteres visibles (de 33 a 127) [opcional]

 - Obtenemos el caracter correspondiente a X

 - Lo añadimos a un String.

**Cabe destacar que si llegamos al final de una cadena (E, o P), debemos volver al inicio de la misa
Para ponerte un ejemplo:

Input: 01234
Pass: 543210

L = 5
ASCII(0) = 48
[formato X: (ASCII, I + P)
X= (101; "0"+"5"), (101; "1"+"4"), (101, "2" + "3"), (101, "3" + "2"), (101, "4" + "1"), (95, "0" + "0") => eeee_

Para desencriptar has de hacer el proceso inverso...

Si quieres te puedo pasar el código en C o en PHP...

Espero que te ayude,

Saludos!