ok
unknown
plain_text
a year ago
2.2 kB
17
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