Untitled

 avatar
unknown
plain_text
a year ago
2.2 kB
4
Indexable
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>

// Function to check if a string is an email address
bool isEmailAddress(const std::string& data) {
    return data.find('@') != std::string::npos;
}

// Function to mask an email address
std::string maskEmailAddress(const std::string& email) {
    std::string result;
    std::string localPart, domainPart;
    size_t atPosition = email.find('@');
    localPart = email.substr(0, atPosition);
    domainPart = email.substr(atPosition);
    
    // Convert all characters to lowercase
    std::transform(localPart.begin(), localPart.end(), localPart.begin(), ::tolower);
    std::transform(domainPart.begin(), domainPart.end(), domainPart.begin(), ::tolower);

    // Mask the local part
    result = localPart[0] + std::string(5, '*') + localPart.back() + domainPart;
    return result;
}

// Function to mask a phone number
std::string maskPhoneNumber(const std::string& phoneNumber) {
    std::string digits;
    // Extract all digits from the input string
    for (char ch : phoneNumber) {
        if (isdigit(ch)) {
            digits += ch;
        }
    }
    
    int numDigits = digits.size();
    std::string maskedNumber;
    
    // Determine the country code and format the masked number accordingly
    if (numDigits > 10) {
        int countryCodeLength = numDigits - 10;
        maskedNumber = "+" + digits.substr(0, countryCodeLength) + "-";
        digits = digits.substr(countryCodeLength);
    }
    
    // Append the local number
    maskedNumber += "***-***-" + digits.substr(digits.size() - 4);
    return maskedNumber;
}

// Function to mask sensitive information
std::string maskSensitiveInformation(const std::string& data) {
    if (isEmailAddress(data)) {
        return maskEmailAddress(data);
    } else {
        return maskPhoneNumber(data);
    }
}

int main() {
    std::string data1 = "John.Doe@example.com";
    std::string data2 = "+1-234-567-8900";

    std::cout << "Masked Email: " << maskSensitiveInformation(data1) << std::endl;
    std::cout << "Masked Phone: " << maskSensitiveInformation(data2) << std::endl;

    return 0;
}
Editor is loading...
Leave a Comment