传输字符串时遇到乱码或者需要对数据进行加密解密时,可以使用base64对数据进行处理,乱码使用base64处理后,可以变成正常的字符串。
注意:当数据量非常大的时候,会比较耗时。
static const std::string base64_chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";
static inline bool is_base64(unsigned char c) {
return (isalnum(c) || (c == '+') || (c == '/'));
}
加密
std::string DSI_VisionV1::base64_encode(char const* bytes_to_encode, int in_len) {
std::string ret;
int i = 0;
int j = 0;
unsigned char char_array_3[3];
unsigned char char_array_4[4];
while (in_len--) {
char_array_3[i++] = *(bytes_to_encode++);
if (i == 3) {
char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
char_array_4[3] = char_array_3[2] & 0x3f;
for (i = 0; (i < 4); i++)

本文介绍了一种使用Base64对数据进行加密和解密的方法,适用于传输字符串时防止乱码或增加安全性。文章详细展示了Base64编码和解码的C++实现过程,包括如何将任意二进制数据转换为ASCII字符,以及如何逆向操作。
最低0.47元/天 解锁文章

801





