def mask_middle(s: str, keep_start: int = 4, keep_end: int = 4, mask: str = "*") -> str:
if len(s) <= keep_start + keep_end:
return mask * len(s)
return s[:keep_start] + mask * (len(s) - keep_start - keep_end) + s[-keep_end:]
def mask_email(email: str) -> str:
user, sep, domain = email.partition("@")
if not sep:
return mask_middle(email)
masked = user[0] + "*" * max(1, len(user) - 2) + user[-1] if len(user) > 2 else "*" * len(user)
return f"{masked}@{domain}"
mask_middle("4242424242424242") # '4242********4242'
mask_email("alice@example.com") # 'a***e@example.com'
mask_middle("sk_live_AbC1234", 8, 0) # 'sk_live_********'
Create a free account and build your private vault. Share publicly whenever you want.