一、阐明
1、base64
Base64是一种基于64个可打印字符来示意二进制数据的编码方式,是从二进制数据到字符的过程。
罕用于数据存储、或者传输,与其说是加解密办法,编码方法更适宜形容base64。
2、转换的思路
加密思路
1)base64的编码都是按字符串长度,以每3个8bit的字符为一组
2)针对每组,获取每个字符的ASCII编码
3)将ASCII编码转成8bit的二进制
4)划分为每6bit一组,默认最高2位为00,这样就能38转成46
5)将4*6的每一组转为10进制,对照Base64表失去最终的编码后果
6)每76个字符加一个换行符
7)最初的结束符须要解决一下
解密思路
1)对照Base64表将对应字符转为码值
2)将码值转为二进制,每8bit示意一个字符
3)将8bit转为16进制
4)对照ASCII表,获取值
二、术语和参考资料
ASCII对照表
Base64表
三、整体设计
1、类接口
#pragma onceclass CBase64Code{public: CBase64Code(); ~CBase64Code();public: //获取base64加密后的内容 std::string GetBase64Code(const void* pData, int nLen); //对内容进行解密 BOOL DecodeBase64Data(const std::string& strDecodeData, int nDataSize, void** ppData);private: //base64编码 int _Base64Encode(const char *pcszIn, int nInSize, char *pszOut, int nOutSizeMax, int *pnReturnSize, int nNeedCRLF); //base64解码 int _Base64Decode(const char *pcszIn, int nInSize, char *pszOut, int nOutSizeMax, int *pnReturnSize);};
四、示例
1、对字符'j'进行加密
1)查看ASCII表,失去二进制为
01101010
2)Base64每3个8bit一组,补全为
01101010 00000000 00000000
3)划分为4*6,失去
011010 100000 000000 000000
4)转为10进制
26 32 0 0
5)对照Base64表,失去编码后的数据为
a g = =
6)所以"j"通过Base64编码后的数据为
ag==
2、对"ag=="进行解密
1)对照Base64表,失去
26 32 0 0
2)转为二进制
011010 100000 000000 000000
3)转为3*8
01101010 00000000 00000000
4)转为10进制
106 0 0
5)对照ASCII表
j
https://download.csdn.net/dow...