Soluciones de Seguridad de Datos en C++ y Python

Tokenizado

Convierte datos originales en tokens únicos que no revelan información real.

Clase Tokenizado

#ifndef TOKENIZADO_H
#define TOKENIZADO_H

#include 
using namespace std;

class Tokenizado { // Clase para tokenizar
public:
string tokenizarString(string dato); // Tokeniza un string
void tokenizarArchivo(const string &inputFileName, const string &outputFileName, char mascara); // Tokeniza un token para un archivo
};

#endif

Ejemplos de Uso

Tokenizar String

string Tokenizado::tokenizarString(string dato) {
    string token = "";
    int longitud = 16;
    string alphanum =
        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    
    // token aleatorio
    for (int i = 0; i < longitud; i++) {
        token += alphanum[rand() % alphanum.length()];
    }
    return token;
}

Resultado

El string "Juan Perez" tokenizado se convierte en "1A2B3C4D5E6F7G8H9".

Tokenizar Archivo

void Tokenizado::tokenizarArchivo(const string &inputFileName, const string &outputFileName, char mascara) {
    ifstream entrada(inputFileName);  
    ofstream salida(outputFileName);

    if (!entrada.is_open()) {
        cerr << "Error abriendo el archivo de entrada: " << inputFileName << endl;
        return;
    }
    // Leer el contenido del archivo
    string linea, contenido;
    while (getline(entrada, linea)) {
        contenido += linea + "\n";
    }
    entrada.close();

    // Tokenizar el contenido
    string contenidoTokenizado = tokenizarString(contenido);

    // Guardar el contenido tokenizado en el archivo de salida
    if (!salida.is_open()) {
        cerr << "Error abriendo el archivo de salida: " << outputFileName << endl;
        return;
    }
    salida << contenidoTokenizado;
    salida.close();
    cout << "El contenido tokenizado se ha guardado en " << outputFileName << endl;
}

Resultado

archivo.txt:
Datos de persona
Juan Perez
juanperez@gmaillcom
1234567890123456
Transferencia
archivo_tokenizado.txt:
fa37JncCHryDsbza