سؤال

وكيف آمن حذف الملفات في جافا؟ حاولت التعليمات البرمجية في javafaq.nu ، ولكن المشكلة هي انك لا يمكن في الواقع حذف الملف على النوافذ بعد أن يكون قد تم تعيينها بسبب هذا الخطأ .

وبعد ذلك حاولت فقط باستخدام سسنترنلس من SDelete على النوافذ، ولكن عليك ان تضغط على اتفاقية استخدام أول مرة استخدامه التي أريد أن يتجنبه.

هل كانت مفيدة؟

المحلول

في نظام الملفات 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