|
@@ -738,6 +738,73 @@ static std::wstring S2W(const std::string str)
|
|
|
return std::wstring();
|
|
|
}
|
|
|
|
|
|
+enum DataTypeToMask
|
|
|
+{
|
|
|
+ DataMask_UNKNOWN,
|
|
|
+ DataMask_IDCard, /*居民身份证*/
|
|
|
+ DataMask_HKMOTWPermit, /*港澳台居住证*/
|
|
|
+ DataMask_HKMOPermit, /*港澳往来内地通行证*/
|
|
|
+ DataMask_TWPass, /*台胞证*/
|
|
|
+ DataMask_ForeignerPR, /*外国人永久居留证*/
|
|
|
+ DataMask_Passport, /*外国人护照*/
|
|
|
+ DataMask_CardAccount, /*卡号*/
|
|
|
+};
|
|
|
+//to mask data
|
|
|
+//if data is null or empty or length of data is short than 3, break ;
|
|
|
+//return the first one and the last two characters by default
|
|
|
+static CSimpleStringA DataMask(DataTypeToMask eDataType, CSimpleStringA data)
|
|
|
+{
|
|
|
+ if (data.IsNullOrEmpty())
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data is null or empty");
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ else if (data.GetLength() < 3)
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d, too short");
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("data type is %d, length is %d", eDataType, data.GetLength());
|
|
|
+ switch (eDataType)
|
|
|
+ {
|
|
|
+ case DataMask_IDCard:
|
|
|
+ case DataMask_HKMOTWPermit:
|
|
|
+ case DataMask_ForeignerPR:
|
|
|
+ if (data.GetLength() < 7)
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d", data.GetLength());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return CSimpleStringA::Format("%s****%s", data.SubString(0, 6).GetData(), data.SubString(data.GetLength() - 1, 1).GetData());
|
|
|
+ break;
|
|
|
+ case DataMask_HKMOPermit:
|
|
|
+ if (data.GetLength() < 5)
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d", data.GetLength());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return CSimpleStringA::Format("%s****%s", data.SubString(0, 1).GetData(), data.SubString(data.GetLength() - 4, 4).GetData());
|
|
|
+ break;
|
|
|
+ case DataMask_CardAccount:
|
|
|
+ if (data.GetLength() < 5)
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d", data.GetLength());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (data.GetLength() < 16)
|
|
|
+ return CSimpleStringA::Format("%s**%s", data.SubString(0, 2).GetData(), data.SubString(data.GetLength() - 2, 2).GetData());
|
|
|
+ else
|
|
|
+ return CSimpleStringA::Format("%s****%s", data.SubString(0, 4).GetData(), data.SubString(data.GetLength() - 4, 4).GetData());
|
|
|
+ break;
|
|
|
+ case DataMask_TWPass:
|
|
|
+ case DataMask_Passport:
|
|
|
+ case DataMask_UNKNOWN:
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return CSimpleStringA::Format("%s****%s", data.SubString(0, 1).GetData(), data.SubString(data.GetLength() - 2, 2).GetData());
|
|
|
+}
|
|
|
+
|
|
|
} //namespace Util
|
|
|
|
|
|
namespace Net{
|