با سلام D: من برگشتم (:
api ویندوز یکی بهترین وسیله های برای استفاده از توابع است و دردسری را برای برنامه نویس ایجاد نمیکند.
استفاده از api ویندوز در یک پروژه ی برنامه نویسی سی++ ویندوز اجباری است زیرا شما تحت هر شرایطی به آن نیاز پیدا میکنید.
سورس زیر به شما نحوه ی استفاده از لایبراری crypt32.dll و استفاده از توابع aes را به شما آموزش میدهد و برای نوشتن باج افزار ها کمک شایانی به شما میکند :
#include"stdafx.h"
#include <Windows.h>
#include <wincrypt.h>
#include <stdio.h>
#pragma comment(lib, "crypt32.lib")
#define AES_KEY_SIZE 16
#define CHUNK_SIZE (AES_KEY_SIZE*3)
int wmain(int argc, wchar_t *argv[])
{
wchar_t *filename = L"v32.txt";
wchar_t *filename2 = L"v32.aes";
wchar_t *key_str = L"3igcZhRdWq96m3GUmTAiv9";
size_t len = lstrlenW(key_str);
HANDLE hInpFile = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
HANDLE hOutFile = CreateFileW(filename2, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwStatus = 0;
BOOL bResult = FALSE;
wchar_t info[] = L"Microsoft Enhanced RSA and AES Cryptographic Provider";
HCRYPTPROV hProv;
CryptAcquireContextW(&hProv, NULL, info, PROV_RSA_AES, CRYPT_VERIFYCONTEXT);
HCRYPTHASH hHash;
CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash);
CryptHashData(hHash, (BYTE*)key_str, len, 0);
HCRYPTKEY hKey;
CryptDeriveKey(hProv, CALG_AES_128, hHash, 0, &hKey);
const size_t chunk_size = CHUNK_SIZE;
BYTE chunk[chunk_size] = { 0 };
DWORD out_len = 0;
BOOL isFinal = FALSE;
DWORD readTotalSize = 0;
DWORD inputSize = GetFileSize(hInpFile, NULL);
while (bResult = ReadFile(hInpFile, chunk, chunk_size, &out_len, NULL)) {
if (0 == out_len) {
break;
}
readTotalSize += out_len;
CryptEncrypt(hKey, NULL, isFinal, 0, chunk, &out_len, chunk_size);
DWORD written = 0;
WriteFile(hOutFile, chunk, out_len, &written, NULL);
memset(chunk, 0, chunk_size);
}
CryptReleaseContext(hProv, 0);
CryptDestroyKey(hKey);
CryptDestroyHash(hHash);
CloseHandle(hInpFile);
CloseHandle(hOutFile);
return 0;
}
در
کد بالا شما توابع ویندوزی را فراخوانی کرده ، داده ها را گرفته ، کلید
را مشخص، فایل ها را باز کرده و داده ها را با تابع CryptEncrypt رمزنگاری
کردید.
باشد که رستگار شویم.
مار ها از جان عسگر چ میخواهند؟؟
عالی بود ❤️