《C++之base64编码解码》视频补充
本文是对https://www.52pojie.cn/thread-1212431-1-1.html这篇文章的视频补充!昨天编写的代码有点小问题,已更正!
主要讲解:
base64的原理及实现
ascii与二进制的转换
OD如何分析base64加密
32位程序的存储方式,32个二进制,而不是8个,这是我踩得一个坑
视频录的不是很好,太紧张了,再加上发现昨天代码bug,整个人都不好了,所以匆匆结束了。
未讲部分:
base64的简单判断与识别,昨天的文章其实有提过,加密逻辑不会变
那个cm程序是通过把我输入的字符串进行base64编码,然后把密文字符串解码,然后进行比较(现在的序列号保护大多不会直接明文比较)
cm程序的正确字符串为www.52pojie.cn
链接:https://pan.baidu.com/s/1HJUp46SHCShBAu5-yTx5_Q
提取码:ifdo
PS:视频不好,赶快灰溜溜的跑路,怕被打......:lol 我以前也写过,c的:lol
//编码表
unsigned char* encodeTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
// 对字符串进行base64编码
// str:要编码的字符串
unsigned char* base64EncodeStr(unsigned char str[])
{
// 计算需要分配的内存大小
long str_len,encode_len;
str_len = strlen(str);
// (a+b-1)/b 向上取整,
// /3*4 base64编码大小
encode_len = (str_len + 2) / 3 * 4;
// 分配内存
unsigned char* encode;
encode = (unsigned char*)malloc(sizeof(unsigned char) * encode_len);
encode = '\0';
// 进行编码
int i,j;
for (i = 0,j = 0; i < encode_len - 2; i += 4, j += 3) {
encode = encodeTable >> 2];
encode = encodeTable[(str & 0x3) << 4 | str >> 4];
encode = encodeTable[(str & 0xf) << 2 | str >> 6];
encode = encodeTable & 0x3f];
}
// 补=
if (str_len % 3 == 1) {
encode = '=';
encode = '=';
}
else if (str_len % 3 == 2) {
encode = '=';
}
return encode;
} 支持楼主,向你学习:lol 支持分享,学习学习 学习了解一下,看看 学习了!! 说录视频,果然就录了{:1_921:} 代码写得还是可以的,逻辑很清晰 楼主不错啊,加油 感谢分享,下载看看!