private static string Decrypt(string path, string password) { try { var values = FileManager.ReadHeader(path).Split(';'); // Cargamos los datos que requerimos if (values.Length < 3) { return("El archivo parece estar dañado. ¿Ha modificado el archivo?"); // Verificamos los datos } sdes = new SDES(password, values[0], values[1], values[2]); //Genera un objeto sdes con las permutaciones del archivo y genera la clave única (esta clave solo es la misma que la generada al cifrar si la contraseña es la misma) var data = new List <string>(); // Lista que guardará cada fragmento descifrado. // Comienza el descifrado foreach (var item in FileManager.ReadEncryptedFile(path)) { data.Add(sdes.Decrypt(item)); } //Escribimos el archivo original FileManager.WriteFile(path.Remove(path.Length - TYPE.Length, TYPE.Length), data); //Retornamos el estado return("Archivo descifrado y guardado como: " + path.Remove(path.Length - TYPE.Length, TYPE.Length) + "\nSe descifró con la contraseña: " + password); } catch (Exception ex) { return("Archivo no descifrado debido al siguiente error: " + ex.Message); } }
private static string Encrypt(string path, string password) { try { sdes = new SDES(password); // Genera un objeto sdes con una clave única y permutaciones nuevas var data = new List <string>(); //Lista que guardará cada fragmento cifrado // Comienza el cifrado foreach (var item in FileManager.ReadUnencryptedFile(path)) { data.Add(sdes.Encrypt(item)); } //Escribe los datos al archivo .cif FileManager.WriteHeader(path + TYPE, string.Join(",", sdes.PKey10) + ";" + string.Join(",", sdes.PKey8) + ";" + string.Join(",", sdes.PKey4)); FileManager.WriteFile(path + TYPE, data); //Retorna el estado. return("Archivo cifrado y guardado como: " + path + TYPE + "\nSe cifró con la contraseña: " + password); } catch (Exception ex) { return("Archivo no cifrado debido al siguiente error: " + ex.Message); } }