Spaces:
Paused
Paused
| """ | |
| Utilidades de seguridad para logs — CrowData. | |
| Enmascara datos sensibles (CUIT, DNI, email) en logs. | |
| """ | |
| import re | |
| def mask_cuit(cuit: str) -> str: | |
| """ | |
| Enmascara un CUIT mostrando solo los últimos 4 dígitos. | |
| Ejemplo: 20-29681148-4 → ******1484 | |
| """ | |
| if not cuit or len(cuit) < 6: | |
| return "******" | |
| clean = cuit.replace("-", "").replace(" ", "") | |
| return "*" * (len(clean) - 4) + clean[-4:] | |
| def mask_dni(dni: str) -> str: | |
| """ | |
| Enmascara un DNI mostrando solo los últimos 3 dígitos. | |
| Ejemplo: 12345678 → ****5678 | |
| """ | |
| if not dni or len(dni) < 4: | |
| return "****" | |
| clean = dni.replace(".", "").replace(" ", "") | |
| return "*" * (len(clean) - 3) + clean[-3:] | |
| def mask_email(email: str) -> str: | |
| """ | |
| Enmascara un email mostrando solo la primera letra y dominio. | |
| Ejemplo: lucas@crowdata.ar → l*****@crowdata.ar | |
| """ | |
| if not email or "@" not in email: | |
| return "***" | |
| local, domain = email.split("@", 1) | |
| if len(local) <= 1: | |
| return f"*@{domain}" | |
| return f"{local[0]}{'*' * (len(local) - 1)}@{domain}" | |