小菜鸟一枚 发表于 2020-7-4 10:48

《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

ruxia 发表于 2020-7-5 10:38

我以前也写过,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;       
}

seagyf 发表于 2020-7-4 11:17

支持楼主,向你学习:lol

cherrypi 发表于 2020-7-4 11:44

支持分享,学习学习

sss55 发表于 2020-7-4 11:44

学习了解一下,看看

雨落惊鸿, 发表于 2020-7-4 13:20

学习了!!

endriver 发表于 2020-7-4 16:49

说录视频,果然就录了{:1_921:}

minibeetuaman 发表于 2020-7-4 17:03

代码写得还是可以的,逻辑很清晰

Blovesea 发表于 2020-7-4 20:28

楼主不错啊,加油

JerryLia 发表于 2020-7-5 08:34

感谢分享,下载看看!
页: [1] 2 3
查看完整版本: 《C++之base64编码解码》视频补充