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