MFC BASE64加解密 算法
- 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加解密 算法的更多相关文章
- base64加/解密算法C++实现
base64编码原理:维基百科 - Base64 其实编码规则很简单,将字符串按每三个字符组成一组,因为每个字符的 ascii 码对应 0~127 之间(显然,不考虑其他字符集编码),即每个字符的二进 ...
- java base64加解密
接上篇java Base64算法. 根据之前过程使用base64加解密,所以写成了工具类. 代码示例; public class Base64Util { private static Logger ...
- 3des加解密算法
编号:1003时间:2016年4月1日09:51:11功能:openssl_3des加解密算法http://blog.csdn.net/alonesword/article/details/17385 ...
- QQ协议的TEA加解密算法
QQ通讯协议里的加解密算法. #include <stdio.h> #include <stdlib.h> #include <memory.h> #include ...
- DES加解密算法Qt实现
算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...
- AES加解密算法Qt实现
[声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...
- C#加解密算法
先附上源码 加密解密算法目前已经应用到我们生活中的各个方面 加密用于达到以下目的: 保密性:帮助保护用户的标识或数据不被读取. 数据完整性:帮助保护数据不被更改. 身份验证:确保数据发自特定的一方. ...
- AES加解密算法在Android中的应用及Android4.2以上版本调用问题
from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...
- [转]RSA,DSA等加解密算法介绍
From : http://blog.sina.com.cn/s/blog_a9303fd90101cgw4.html 1) MD5/SHA MessageDigest是一个数据的数字指纹. ...
随机推荐
- 如何在vscode中用standard style 风格去验证 vue文件
1 JavaScript Standard Style简介 本工具通过以下三种方式为你(及你的团队)节省大量时间: 无须配置. 史上最便捷的统一代码风格的方式,轻松拥有. 自动代码格式化. 只需运行 ...
- emit传多个参数
https://blog.csdn.net/lxy123456780/article/details/87811113 子组件: this.$emit('closeChange',false,true ...
- vue computed、filters 用法笔记
computed 在使用时的效果是属性,不是函数. 其次,computed 的值是“智能”响应的,依赖必须都是这个实例自己的东西,如果某个计算需要依赖传入的值,则推荐使用 methods. filte ...
- 记录从裸机到TensorFlow GPU版运行 的配置过程
实验室原来有一台装Ubuntu Server系统的服务器,安装有tensorflow,在使用过程中经常出现断网.死机.自动关机等毛病,忍无可忍,决定重装系统 配置如下:Dell工作站,Xeon-E5 ...
- HTML 001 入门介绍
HTML 教程- (HTML5 标准) 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. 您可以使用 HTML 来建立自己的 ...
- 提高 github.com 项目下载速度
1 注册一个 github.com 账号 2 进入你感兴趣的项目 3 Fork 一个副本到你的账号之下 4 git clone https://github.com/your-name/fork-p ...
- Laravel 6.0 Schedule Preventing Task Overlaps 测试
1 目的 1.1 测试 Laravel 6.0 任务执行机制 2 意义 2.1 在日常开发中,有的任务比较复杂,在两次任务的调度周期间隔中无法完成. 2.2 为了防止重复任务的持续生成和反复调用,对服 ...
- 009_Python3 元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 实例1: >>> ...
- 003_Python3 基本数据类型
1.Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存 ...
- javaweb+上传大文件
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...