⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filewipe.cpp

📁 文件加密解密源代码
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///[FileWipe - HDD File Wiping class]///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// This class is for securly remove file from the hard drive.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Written by Nir Dremer
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include "filewipe.h"

namespace GenLib
{

bool FileWipe::wipeFile(const char *filename)
{
	// FILE_FLAG_WRITE_THROUGH - writing directly to disk (not using cache).
	HANDLE hFile = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, 
							NULL, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, NULL);
	if (hFile == INVALID_HANDLE_VALUE) return false;

	DWORD fileSize = GetFileSize(hFile, 0);
	// if file is empty.
	if (!fileSize)
	{
		CloseHandle(hFile);
		return false;
	}

	for (int passes = 0; passes < OVERWRITE_PASSES; passes++)
	{
		char newStorage[BUFFER_SIZE];
		srand((unsigned)time(NULL));
		FillMemory((void*)newStorage, BUFFER_SIZE, rand() % 255);

		SetFilePointer(hFile, 0, NULL, FILE_BEGIN);

		DWORD left = fileSize;
		int write = BUFFER_SIZE;
		DWORD written = 0;
		while (left)
		{
			if (left < BUFFER_SIZE) write = left;

			BOOL status = WriteFile(hFile, newStorage, write, &written, NULL);
			if (!status)
			{
				CloseHandle(hFile);
				return false;
			}

			left -= write;
		}
	}

	CloseHandle(hFile);


	if (!DeleteFile(filename)) return false;

	return true;
}


};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -