5,1 Kio
Encrypt
Este modulo integra una clase CEncryptor, clase warppers con funciones utiles para encryptar y desencriptar archivos y texto se basa en las funciones nativas que proporciona MQL5 (CryptEncode / CryptDecode).
Métodos soportados
| Método | Key requerida |
|---|---|
CRYPT_AES128 |
16 chars |
CRYPT_AES256 |
32 chars |
CRYPT_DES |
7 chars |
Los métodos de hash (
CRYPT_HASH_SHA1,CRYPT_HASH_SHA256,CRYPT_HASH_MD5) yCRYPT_BASE64no son métodos de encriptación y no están soportados por esta clase.
Funcion EncryptFile
Firma:
bool EncryptFile(const string& file_name, bool common_flag, ENUM_CRYPT_METHOD method, bool delete_prev_file, string ext_encrypt = "")
Parametros
| Parámetro | Descripción |
|---|---|
file_name |
Ruta del archivo encriptado |
common_flag |
true = carpeta Common, false = MQL5\Files del terminal |
method |
Método usado al encriptar (ver tabla de métodos) |
delete_prev_file |
true = elimina el archivo encriptado original tras encriptar |
ext_encrypt |
true = Extension para el archivo encryptado por defecto nada ("") |
Ejemplos
enc.EncryptFile("file.txt", false, CRYPT_AES256, false, ".enc");
Funcion DecryptFile
Firma
// Versión 1 — resultado en archivo
bool DecryptFile(const string& file_name, bool common_flag, ENUM_CRYPT_METHOD method, bool delete_prev_file, string ext_decrypt = "")
// Versión 2 — resultado en memoria
bool DecryptFile(const string& file_name, bool common_flag, ENUM_CRYPT_METHOD method, bool delete_prev_file, uchar& res_data[])
Parámetros comunes
| Parámetro | Descripción |
|---|---|
file_name |
Ruta del archivo encriptado |
common_flag |
true = carpeta Common, false = MQL5\Files del terminal |
method |
Método usado al encriptar (ver tabla de métodos) |
delete_prev_file |
true = elimina el archivo encriptado original tras desencriptar |
Parámetro ext_decrypt (Versión 1)
Controla el nombre del archivo de salida:
| Valor | Comportamiento | Ejemplo |
|---|---|---|
"" |
Sobreescribe el mismo archivo | file.enc a file.enc |
".ext" |
Agrega extensión al nombre | file.enc a file.enc.ext |
"-" |
Quita la última extensión | file.enc a file |
".ext-" |
Reemplaza la última extensión | file.enc a file.ext |
Nota: Si
delete_prev_file = falseyext_decrypt = "", el archivo encriptado (solo si este no tiene extension, si tiene eg .enc el archivo original no sera sobreescrito solo el encriptado) es sobreescrito con el contenido desencriptado.
Ejemplos
// Versión 1 — quitar extensión .enc
enc.DecryptFile("data.csv.enc", true, CRYPT_AES256, true, "-");
// Resultado: data.csv (data.csv.enc eliminado)
// Versión 1 — reemplazar extensión
enc.DecryptFile("data.csv.enc", true, CRYPT_AES256, false, ".csv-");
// Resultado: data.csv (data.csv.enc conservado)
// Versión 2 — resultado en memoria
uchar buffer[];
enc.DecryptFile("data.csv.enc", true, CRYPT_AES256, false, buffer);
// buffer contiene el contenido desencriptado
SetAleatoryKey
Firma
bool SetAleatoryKey(ENUM_CRYPT_METHOD method, FuncGenerateRandomUchar f_generate_char, void* ptr = NULL, uchar chart_start = 32, uchar chart_stop = 255)
Parámetros
| Parámetro | Descripción |
|---|---|
method |
Método de encriptación (determina el largo de la key) |
f_generate_char |
Función que genera un uchar aleatorio |
ptr |
Puntero al generador (se pasa a f_generate_char, esto es opcional solo si la funcion trabaja con clases) |
chart_start |
Valor mínimo del carácter generado (default: 32) |
chart_stop |
Valor máximo del carácter generado (default: 255) |
Nota: El largo de la key se determina automáticamente según el método: AES128 = 16, AES256 = 32, DES = 7. La key generada queda almacenada internamente y puede recuperarse con
Key().
Ejemplo
CRandomSimple random;
enc.SetAleatoryKey(CRYPT_AES256, RandomSimpleGenerateRandomUchar, &random);
Print(enc.Key()); // key de 32 chars generada
EncryptText / DecryptText
Firma
bool EncryptText(const string& initial_text, ENUM_CRYPT_METHOD method, string& encrypted_text)
bool DecryptText(const string& encrypted_text, ENUM_CRYPT_METHOD method, string& decrypted_text)
Parámetros
| Parámetro | Descripción |
|---|---|
initial_text |
Texto plano a encriptar |
encrypted_text |
String encriptado en BASE64 (entrada en Decrypt, salida en Encrypt) |
decrypted_text |
Texto plano recuperado (salida en Decrypt) |
method |
Método de encriptación (ver tabla de métodos) |
Nota: El texto encriptado se convierte automáticamente a BASE64 para poder almacenarse como
string. Al desencriptar se revierte el proceso: BASE64 → bytes → texto original.
Ejemplo
string encrypted, decrypted;
enc.EncryptText("texto secreto", CRYPT_AES256, encrypted);
// encrypted contiene el texto en BASE64
enc.DecryptText(encrypted, CRYPT_AES256, decrypted);
// decrypted == "texto secreto"