|
发表于 2016-6-23 11:21:39
|
显示全部楼层
std::string HexString_Encrypt(const char* data, int len) {
const static char hexdig[] = "0123456789ABCDEF";
int i;
const unsigned char *p;
std::string result;
if (!data || !len)
return result;
for (i = 0, p = (const unsigned char*)data;
i < len;
++i, ++p) {
result.append(1, hexdig[(*p >> 4) & 0xf]);
result.append(1, hexdig[*p & 0xf]);
}
return result;
}
std::string HexString_Decrypt(const char* data, int len) {
std::string result;
unsigned char ch, cl, *p;
if (!data || len % 2) {
return result;
}
for (p = (unsigned char *)data; *p;) {
ch = *p++;
cl = *p++;
if (!cl) {
result.clear();
return result;
}
if (isupper(ch))
ch = tolower(ch);
if (isupper(cl))
cl = tolower(cl);
if ((ch >= '0') && (ch <= '9'))
ch -= '0';
else if ((ch >= 'a') && (ch <= 'f'))
ch -= 'a' - 10;
else
goto badhex;
if ((cl >= '0') && (cl <= '9'))
cl -= '0';
else if ((cl >= 'a') && (cl <= 'f'))
cl -= 'a' - 10;
else
goto badhex;
result.append(1, (unsigned char)((ch << 4) | cl));
}
return result;
badhex:
result.clear();
return result;
} |
|