//BASE64密码编码
// base64.cpp - written and placed in thepublic domain by Wei Dai
#include "pch.h"
#include "base64.h"
NAMESPACE_BEGIN(CryptoPP)
//定义字母表
static const byte s_vec[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static const byte s_padding = '=';
//编码初始化,初始化ProxyFilter代理过滤类的member_ptr<B
//ufferedTransformation>m_filter;缓冲区传送信息
void Base64Encoder::IsolatedInitialize(constNameValuePairs ¶meters)
{
//换行符,行长度
bool insertLineBreaks =parameters.GetValueWithDefault(Name::InsertLineBreaks(),true);
int maxLineLength =parameters.GetIntValueWithDefault(Name::MaxLineLength(),72);
const char *lineBreak =insertLineBreaks ? "\n" : "";
//MakeParameters的参数依次为:字母表、填充符、分隔符、终结符、
//LONGTOBASE以6位二进制为基数
m_filter->Initialize(CombinedNameValuePairs(
parameters,
MakeParameters(Name::EncodingLookupArray(),&s_vec[0], false)
(Name::PaddingByte(),s_padding)
(Name::GroupSize(),insertLineBreaks ? maxLineLength : 0)
(Name::Separator(),ConstByteArrayParameter(lineBreak))
(Name::Terminator(),ConstByteArrayParameter(lineBreak))
(Name::Log2Base(),6, true)));
}
//得到解码数组
const int*Base64Decoder::GetDecodingLookupArray()
{
static bool s_initialized = false;
static int s_array[256];
if(!s_initialized)
{
//如果需要初始化,则初始化解码s_array,
//指明是64位的编码
InitializeDecodingLookupArray(s_array,s_vec, 64, false);
s_initialized = true;
}
return s_array;
}
NAMESPACE_END
//BASE64密码编码头文件
#ifndef CRYPTOPP_BASE64_H
#define CRYPTOPP_BASE64_H
#include "basecode.h"
NAMESPACE_BEGIN(CryptoPP)
//! Base64 Encoder Class
//类继承情况
//SimpleProxyFilter->Base64Encoder
//BaseN_Decoder->Base64Decoder
class Base64Encoder : public SimpleProxyFilter
{//编码类继承了SimpleProxyFilter简单代理类
public:
//使用换行符、行长度、缓冲区传输信息变量为参数构造
Base64Encoder(BufferedTransformation *attachment= NULL, bool insertLineBreaks = true, int maxLineLength = 72)
: SimpleProxyFilter(newBaseN_Encoder(new Grouper), attachment)
{
IsolatedInitialize(MakeParameters(Name::InsertLineBreaks(),insertLineBreaks)(Name::MaxLineLength(), maxLineLength));
}
voidIsolatedInitialize(const NameValuePairs ¶meters);
};
//! Base64 Decoder Class
class Base64Decoder : public BaseN_Decoder
{//解码类继承了BaseN_Decoder类
public:
Base64Decoder(BufferedTransformation *attachment= NULL)
:BaseN_Decoder(GetDecodingLookupArray(), 6, attachment){}
voidIsolatedInitialize(const NameValuePairs ¶meters){}
private:
static const int * CRYPTOPP_APIGetDecodingLookupArray();
};
NAMESPACE_END
#endif
相关推荐
ubuntu-base是一个基础的Ubuntu系统,可以理解为最小的Ubuntu系统,Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,属于Linux操作系统。 Ubuntu 是基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc...
基于ubuntu 16.04.6的 jeos,最小的完整ubuntu系统。 直接解压tar包到ext3、ext4分区,添加grub4dos或grub2引导即可。 注意:可能需要修改解压后的/etc/fstab!
前端开源库-base64-loaderbase64加载程序,用于WebPack的base64文件加载程序
rhel-baseos-9.0-beta-0-x86_64-dvd.iso 网盘文件永久链接
前端开源库-meteor-base64流星-base64,空
js-base64-3.7.5.tgz
MIME-Base64-3.01.tar.gz
现在base64.mjs从编译base64.ts然后base64.js从产生base64.mjs 。安装$ npm install --save js-base64用法在浏览器中本地… < script src =" base64.js " > </ script > …或直接来自CDN。 在这种情况...
zip-base64.jar
STM32-BASE64加密源代码.rar
Laravel开发-base64-validation base64编码文件的laravel验证器
react-native-quick-base64 用于React Native的C ++中Base64的本地实现。 比iPhone 11 Pro上的快4倍。 尝试在下进行基准测试。 安装 npm install react-native-quick-base64 用法 import { btoa , atob } from '...
方便下载,ubuntu-base-16.04.6-base-armhf.tar。无修改,官网下载过来的。
base64.js 是 Base64 的 JavaScript 实现。浏览器:[removed][removed]node.jsvar Base64 = require('./base64.js').Base64;示例:Base64.encode('dankogai'); // ZGFua29nYWk= Base64.encode('小飼弾'); // ...
离线安装包,亲测可用
pb10调用base64.dll,实现将图片转换成base64编码,将base64编码转换成图片 函数声明 function long GetFileEncode64(ref string filename, ref string encode64)library "base64" alias for "GetFileEncode64;...
Laravel开发-laravel-base64-validator Laravel Base64验证包
C/C++ Base64编解码开源库,第三方开源库,亲测可用;
前端开源库-react-base16-stylingReact-Base16样式,React样式与Base16配色方案支持
开源-base64、base32、base16 的编码与解码 纯C源码可以再任何环境下编译