Soluciones de Seguridad de Datos en C++ y Python

Truncado

Recorta los datos a una longitud específica para fines de almacenamiento o presentación.

Clase Truncado

#ifndef TRUNCADO_H
#define TRUNCADO_H

#include 
using namespace std;

class Truncado { // Clase para truncar
public:
string truncarNombre(string nombre, int n); // Trunca un nombre hasta n caracteres
string truncarCorreo(string correo, int n); // Trunca un correo hasta n caracteres
string truncarTarjeta(string tarjeta, int n); // Trunca una tarjeta hasta n caracteres
string truncarMensaje(string mensaje, int n); // Trunca un mensaje hasta n caracteres
void truncarArchivo(const string &inputFileName, const string &outputFileName, int n); // Trunca el contenido de un archivo hasta n caracteres
};

#endif

Ejemplos de Uso

Truncar Nombre

string Truncado::truncarNombre(string nombre, int n) {
    string truncado = "";
    for (int i = 0; i < nombre.length();
            i++) {                       // Recorre los carácteres del nombre
        truncado = nombre.substr(0, n); // Trunca el nombre a n caracteres
    }
    return truncado;
}

Resultado

El nombre "Juan Perez" truncado a 5 caracteres se convierte en "Juan".

Truncar Correo

string Truncado::truncarCorreo(string correo, int n) {
    string truncado = "";
    int at_pos = correo.find('@');
    string usuario = correo.substr(0, at_pos);
    
    if (n > usuario.length()) {
        truncado = correo.substr(at_pos, correo.length());
    } else {
        for (int i = 0; i < correo.length(); i++) {
        if (correo[i] == '@') {
            truncado += correo.substr(i, correo.length());
            break;
        } else if (i < at_pos && i < n) {
            truncado += correo[i];
        }
        }
    }
    return truncado;
}

Resultado

El correo "juanperez@gmail.com" truncado a 10 caracteres se convierte en "juanperez".

Truncar Tarjeta

string Truncado::truncarTarjeta(string tarjeta, int n) {
    string truncado = "";
    for (int i = 0; i < n; i++) { // Recorre los carácteres de la tarjeta
        truncado += tarjeta[i];     // Agrega el carácter al truncado final
    }
    return truncado;
}

Resultado

La tarjeta "1234567890123456" truncada a 4 caracteres se convierte en "1234".

Truncar Mensaje

string Truncado::truncarMensaje(string mensaje, int n) {
    string truncado = "";
    for (int i = 0; i < mensaje.length();
            i++) {                        // Recorre los carácteres del mensaje
        truncado = mensaje.substr(0, n); // Trunca el mensaje a n caracteres
    }
    return truncado;
}

Resultado

El mensaje "Hola Mundo" truncado a 5 caracteres se convierte en "Hola".

Truncar Archivo

void Truncado::truncarArchivo(const string &inputFileName, const string &outputFileName, int n) {
    ifstream entrada(inputFileName);
    ofstream salida(outputFileName);

    if (!entrada.is_open()) {
        cerr << "Error abriendo el archivo de entrada: " << inputFileName << endl;
        return;
    }
    if (!salida.is_open()) {
        cerr << "Error abriendo el archivo de salida: " << outputFileName << endl;
        return;
    }

    Utils util;
    string linea;
    while (getline(entrada, linea)) {
        // Determinar el tipo de dato y truncar
        string truncado;
        if (util.esNumeroTarjeta(linea)) {
            truncado = truncarTarjeta(linea, n);
        } else if (util.esCorreo(linea)) {
            truncado = truncarCorreo(linea, n);
        } else if (util.esNombre(linea)) {
            truncado = truncarNombre(linea, n);
        } else {
            truncado = linea; // Si no se reconoce, dejar la línea tal cual
        }
        salida << truncado << endl;
    }
    entrada.close();
    salida.close();
    cout << "El contenido truncado se ha guardado en " << outputFileName << endl;
}

Resultado

archivo.txt:
Datos de persona
Juan Perez
juanperez@gmaillcom
1234567890123456
Transferencia
archivo_truncado.txt:
Datos
Juan 
juan 
1234
Trans