unsigned char * base64 = (unsigned char *)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

 CString ToolFiles::base64encode(CString src, int srclen)
{
int n, buflen, i, j;
static unsigned char *dst;
CString buf = src;
buflen = n = srclen;
dst = (unsigned char*)malloc(buflen / * + );
memset(dst, , buflen / * + );
for (i = , j = ; i <= buflen - ; i += , j += ) {
dst[j] = (buf[i] & 0xFC) >> ;
dst[j + ] = ((buf[i] & 0x03) << ) + ((buf[i + ] & 0xF0) >> );
dst[j + ] = ((buf[i + ] & 0x0F) << ) + ((buf[i + ] & 0xC0) >> );
dst[j + ] = buf[i + ] & 0x3F;
}
if (n % == ) {
dst[j] = (buf[i] & 0xFC) >> ;
dst[j + ] = ((buf[i] & 0x03) << );
dst[j + ] = ;
dst[j + ] = ;
j += ;
}
else if (n % == ) {
dst[j] = (buf[i] & 0xFC) >> ;
dst[j + ] = ((buf[i] & 0x03) << ) + ((buf[i + ] & 0xF0) >> );
dst[j + ] = ((buf[i + ] & 0x0F) << );
dst[j + ] = ;
j += ;
}
for (i = ; i < j; i++)
dst[i] = base64[(int)dst[i]];
dst[j] = ;
return CString(dst);
} CString ToolFiles::base64decode(CString inpt, int * len)
{
int n, i, j, pad;
unsigned char *p;
static unsigned char *dst;
unsigned char * src;
*len = ;
pad = ;
n = inpt.GetLength();
src = new unsigned char[n];
for (i = ; i < n; i++)
src[i] = inpt[i]; while (n> && src[n - ] == '=') {
src[n - ] = ;
pad++;
n--;
}
for (i = ; i < n; i++) {
p = (unsigned char *)strchr((const char *)base64, (int)src[i]);
if (!p)
break;
src[i] = p - (unsigned char *)base64;
} dst = (unsigned char *)malloc(n * / + );
memset(dst, , n * / + );
for (i = , j = ; i < n; i += , j += ) {
dst[j] = (src[i] << ) + ((src[i + ] & 0x30) >> );
dst[j + ] = ((src[i + ] & 0x0F) << ) + ((src[i + ] & 0x3C) >> );
dst[j + ] = ((src[i + ] & 0x03) << ) + src[i + ];
*len += ;
}
*len -= pad;
return CString(dst);
}

有问题 加我QQ:97184072

MFC BASE64加解密 算法的更多相关文章

  1. base64加/解密算法C++实现

    base64编码原理:维基百科 - Base64 其实编码规则很简单,将字符串按每三个字符组成一组,因为每个字符的 ascii 码对应 0~127 之间(显然,不考虑其他字符集编码),即每个字符的二进 ...

  2. java base64加解密

    接上篇java Base64算法. 根据之前过程使用base64加解密,所以写成了工具类. 代码示例; public class Base64Util { private static Logger ...

  3. 3des加解密算法

    编号:1003时间:2016年4月1日09:51:11功能:openssl_3des加解密算法http://blog.csdn.net/alonesword/article/details/17385 ...

  4. QQ协议的TEA加解密算法

    QQ通讯协议里的加解密算法. #include <stdio.h> #include <stdlib.h> #include <memory.h> #include ...

  5. DES加解密算法Qt实现

      算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...

  6. AES加解密算法Qt实现

    [声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...

  7. C#加解密算法

    先附上源码 加密解密算法目前已经应用到我们生活中的各个方面 加密用于达到以下目的: 保密性:帮助保护用户的标识或数据不被读取. 数据完整性:帮助保护数据不被更改. 身份验证:确保数据发自特定的一方. ...

  8. AES加解密算法在Android中的应用及Android4.2以上版本调用问题

     from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...

  9. [转]RSA,DSA等加解密算法介绍

    From : http://blog.sina.com.cn/s/blog_a9303fd90101cgw4.html 1)      MD5/SHA MessageDigest是一个数据的数字指纹. ...

随机推荐

  1. rhel7.0替换centos yum源

    1:卸载原先的yum 2:安装centos的yum 有以下的yum yum-utils-1.1.31-24.el7.noarch yum-langpacks-0.4.2-3.el7.noarch yu ...

  2. dede织梦调用顶级二级栏目及下三级栏目方法(数据库实现)

    上次有说道能调用织梦的二级栏目今天来说道说道调用三级,乃至无限极 ①:通过dede调用二级栏目大家都会调用,但要调用三级栏目,就有点麻烦了,如下样式的三级栏目dede如何调用呢?如下: ------- ...

  3. native关键字

    1.native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中. 可以将native方法比作Java程序同C程序的接口

  4. ZROI Day6比赛总结

    比赛还没结束而且我没有参加比赛就来这里了. T1 略 T2 设\(ans_d\)表示\(d|b_i\)的方案数(最后反演一下就可以) 设\(d\not|a_i\)的个数为\(l\)(可以\(O(n\l ...

  5. mysql的存储引擎与锁

    一.背景知识 1.锁是计算机协调多个进程或线程并发访问某一资源的机制. A.锁分类. | 共享锁(读锁):在锁定期间,多个用户可以读取同一个资源,读取过程中数据不会发生变化. | 排他锁(写锁):在锁 ...

  6. journalnode Can't scan a pre-transactional edit log 异常处理

    由于数据磁盘爆满,达到100%,导致journalnode宕掉,在启动journalnode以后,查看日志,提示Can't scan a pre-transactional edit log,这个时候 ...

  7. python3编程基础之一:程序结构

    程序从程序入口进入,到程序执行结束,大体是按照顺序结构执行语句.函数或代码块,掌握程序的结构,有利于把握程序的主体框架. 1.顺序结构--最常见的结构 顺序结构的程序设计是最简单的,只要按照解决问题的 ...

  8. ICEM-圆锥的一种画法

    原视频下载地址:https://yunpan.cn/cqK53dKBnduM9  访问密码 42be ​

  9. vue学习一

    自己根据网上的教程新建了一个vue_tes项目.想自己在里面修改,添加各种内容.新建了几个vue页面,一直想把他们关联起来展示.非常心急,没有仔细去看文档,而且网上的教程都是单页面的.很好理解.自己创 ...

  10. HttpClient学习(一)—— 基本使用

    HttpClient是支持Http协议的客户端编程工具包. 一.简单使用 1.1 引入依赖 <dependency> <groupId>org.apache.httpcompo ...