File size: 1,111 Bytes
4223796
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""
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}"