문제

Java에서 파일을 안전하게 삭제하려면 어떻게합니까? 나는 코드를 시도했다 Javafaq.nu, 그러나 문제는 Windows에서 파일을 삭제 한 후에는 실제로 파일을 삭제할 수 없다는 것입니다. 이 버그.

그런 다음 사용하려고했습니다 sysinternals sdelete Windows에서는 피하고 싶은 처음 사용하면 사용법 계약을 클릭해야합니다.

도움이 되었습니까?

해결책

NTFS와 같은 저널링 파일 시스템에는 실제로 드라이브의 모든 여유 공간을 닦지 않고 단일 파일을 안전하게 지우는 방법이 없습니다. 문제는 새로운 블록 (아마도 임의의 데이터로 덮어 쓴 것)이 기존 디스크와 같은 장소에있는 것으로 보장되지 않는다는 것입니다.

Sdelete와 같은 유틸리티는 당신에게 효과가있을 수 있지만, 그 실행 파일을 그 방어 방법을 방어하기 위해 아무것도하지 않는 것으로 대체 할 수 있습니다.

데이터를 안전하게 유지하기 위해 유일한 실제 솔루션은 드라이브를 완전히 암호화하는 것입니다.

다른 팁

이 기능을 코딩하고 시도했는데 작동하는 것 같았습니다.

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();
    }
}

파일에서 deleteOnexit ()가 있을까요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top