C++实现 safaBase64编码跟nonSafeBase64编码的转换
默认Base64编码的字符串,用于网络传输是不安全的,因为Base64编码使用的标准字典含有“+”,“/”。
规则如下:
//nonSafeBase64 到 safeBase64
'+'   ------>>  '-'
'/' ------>> '_'
//safeBase64 到 nonSafeBase64
'-'   ------>>  '+'
'_' ------>> '/'
字符串长度%4的余数,补'='
//safeBase64 非safeBase64 想换转换
std::string safeAndNonsafeBase64Change(std::string inputStr, int mode)
{
if( mode == ) //safe -->> nonsafe
{
for(int i = ; i < inputStr.size(); i++)
{
if(inputStr[i] == '-')
{
inputStr[i] = '+';
continue;
}
if(inputStr[i] == '_')
{
inputStr[i] = '/';
continue;
}
}
int remainder = inputStr.length()%;
while(remainder--)
{
inputStr.append("=");
}
return inputStr;
}
else if (mode == ) //nonsafe -->> safe
{
for(int i = ; i < inputStr.size(); i++)
{
if(inputStr[i] == '+')
{
inputStr[i] = '-';
continue;
}
if(inputStr[i] == '/')
{
inputStr[i] = '_';
continue;
}
if(inputStr[i] == '=')
{
//inputStr[i] = '';
inputStr.pop_back();
continue;
}
}
return inputStr;
}
else
return std::string(""); }
附: C++二进制字符串转Base64字符串 Base64字符串转二进制字符串
C++实现 safaBase64编码跟nonSafeBase64编码的转换的更多相关文章
- 【字符编码】字符编码 && Base64编码算法
		一.前言 在前面的解决乱码的一文中,只找到了解决办法,但是没有为什么,说白了,就是对编码还是不是太熟悉,编码问题是一个很简单的问题,计算机从业人员应该也必须弄清楚,基于编码的应用有Base64加密算法 ... 
- cnless.sh:改进版less,可自动识别GBK编码或UTF-8编码。
		#!/bin/bash #功能:让GBK编码的文件可以使用less正常显示中文(自动识别GBK和UTF-8编码) #v0. 在LINUX下,使用UTF-8编码,less UTF-8的文件时显示中文正常 ... 
- 签名、BOM头、编码、Windows记事本编码、java编码解码的那些事
		对于Windows记事本: ANSI :GB2312 java中应使用GBK解码 Unicode :有签名的UTF-16LE java中应使用UTF-16解码 Unicode big endian : ... 
- 天气预报API(五):城市代码--“新编码”和“旧编码” 对比
		参考一些博客.文章 来查找 测试 接口,后来发现两套城市编码标准,有点想法,故拿来对比分析. 注:新旧编码是个人主观叫法,只是为了方便称呼,可能有不当之处,请留言更正. 暂且称 中国天气网等网站使用的 ... 
- 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码
		响应编码 产生原因以及解决办法: 示例: package cn.yzu; import java.io.IOException; import javax.servlet.ServletExcept ... 
- HTTP 协议中的 Content-Encoding 和 Transfer-Encoding(内容编码和传输编码)
		转自:http://network.51cto.com/art/201509/491335.htm Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」.实际上,HT ... 
- Asp.net把UTF-8编码转换为GB2312编码
		系统采用的UTF-8编码,而一些支持系统使用的是GB2312编码. 不同编码的页面.脚本之间互相引用,就会产生乱码的问题,解决方法就是统一成一种编码.asp.net 中,如果要修改输出页面的编码,可以 ... 
- linux下查看文件编码及修改编码
		http://blog.csdn.net/jnbbwyth/article/details/6991425 查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编 ... 
- C++实现RTMP协议发送H.264编码及AAC编码的音视频
		http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP ... 
随机推荐
- CSS3 ::selection 选择器
			::selection { color:#ff0000; } ::-moz-selection { color:#ff0000; }详见 http://www.css88.com/archives/5 ... 
- Vue SSR 配合Java的Javascript引擎j2v8实现服务端渲染3配置webpack支持ssr
			安装 cross-env yarn add -D cross-env 安装 html-webpack-plugin yarn add -D html-webpack-plugin 安装 webpack ... 
- Exception 01 : org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo]
			异常名称 org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo] 异常截屏 异常详细信息 org.hibernat ... 
- PHP之类型转化
			类型转化的判别 PHP在变量定义中不需要(或者不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的, 也就是说,如果把一个string值付给变量$var,$var就成了一个string,如 ... 
- Xcode报错Expected selector for Objective-C and Expected method body
			昨天把键盘拿起来拍一下清清灰,然后就发现Xcode报错了,Xcode报错Expected selector for Objective-C and Expected method body,也不知道什 ... 
- Aspects源码解析(转载)
			文章来源:https://www.jianshu.com/p/2c93446d86bd 
- [development][libhtp] libhtp 启用debug模式
			可以使用 ./configure --help 查看帮助. 可以通过参数, 修改配置. 即对应的Makefile内容. 也可以修改 configure.ac 里的内容, help中的部分内容, 也依赖 ... 
- Python中生成器和迭代器的区别(代码在Python3.5下测试):
			https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ... 
- Delphi maskedit控件的掩码含义及用法方法
			Delphi maskedit控件的掩码含义及用法方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ... 
- day5_函数_文件读写_用一个函数来满足文件的读或者写_应用默认参数
			import json def op_file_tojson(filename,dic=None): #默认值参数,根据是否传dic字典来判断读还是写 if dic: #如果dic传了值,不是空的,则 ... 
