Pregunta

¿Cómo eliminar de forma segura archivos en java? He probado el código en javafaq.nu , pero el problema es que en realidad no puede eliminar el archivo en las ventanas una vez que ha sido asignada debido a la este error .

A continuación, he intentado usar sólo sysinternals sdelete en las ventanas, pero usted tiene que hacer clic en un acuerdo de uso la primera vez que lo utilice la que quiero evitar.

¿Fue útil?

Solución

En un sistema de archivos NTFS diario como, en realidad no hay manera de borrar de forma segura un solo archivo sin borrar todo el espacio libre en la unidad. El problema es que los nuevos bloques (que se ha de suponer sobrescribe con datos aleatorios) no están garantizados para estar en el mismo lugar en el disco como los antiguos.

Utilidades como sdelete podrían funcionar para usted, pero uno podría simplemente reemplazar el ejecutable con uno que no hace nada para impedir que el método de defensa.

Con el fin de mantener sus datos seguros, la única solución real que tiene es para cifrar toda la transmisión.

Otros consejos

codifiqué y trató esta función, y parece que ha funcionado:

public static void secureDelete(File file) throws IOException {
    if (file.exists()) {
        long length = file.length();
        SecureRandom random = new SecureRandom();
        RandomAccessFile raf = new RandomAccessFile(file, "rws");
        raf.seek(0);
        raf.getFilePointer();
        byte[] data = new byte[64];
        int pos = 0;
        while (pos < length) {
            random.nextBytes(data);
            raf.write(data);
            pos += data.length;
        }
        raf.close();
        file.delete();
    }
}

Tal vez hacer deleteOnExit () en el archivo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top