首页 > 其他分享 >Base64编码

Base64编码

时间:2022-08-27 15:48:08浏览次数:77  
标签:编码 string 字符 Base64 bytes input

用途

我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

严格来说base64不能算是一种加密,只能说是编码转换。设计使用base64的初衷,是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴。

字母表

Base64字母表(Alphabet),字符选用了"A-Z、a-z、0-9、+、/" 64个可打印字符

img

编码过程

Base64共有64个字符,用6个bit位就可以全部表示,26=64.

那么怎么用6个有效bit来表示传统字符的8个bit呢

8和6的最小公倍数是24,也就是说3个传统字节可以由4个Base64字符来表示,唯一的不足就是:编码后的数据比未编码的数据多出1/3。

img

"Man"对应的Base64字符是"TWFU"。

如果字符串的长度不是3的倍数时,要怎么办呢

img

"A"对应的Base64字符是"QQ=="。

"BC"对应的Base64字符是"QkM="。

C# 实现

public static string EncryptByBase64(string input)
{
    byte[] bytes = Encoding.UTF8.GetBytes(input);

    return Convert.ToBase64String(bytes);
}

public static string DecryptByBase64(string input)
{
    byte[] bytes = Convert.FromBase64String(input);

    return Encoding.UTF8.GetString(bytes);
}

参考

MIME协议和Base64编码--rfc1341

标签:编码,string,字符,Base64,bytes,input
From: https://www.cnblogs.com/renzhsh/p/16630661.html

相关文章

  • Apple开发_字符串与Unicode编码的互转
    //字符串转Unicode-(NSString*)utf8ToUnicode:(NSString*)string{NSUIntegerlength=[stringlength];NSMutableString*str=[NSMutableStringstrin......
  • VS2019修改文件编码
    1.查看文件编码安装扩展,FileEncoding,就可以在文件窗口右下角查看到该文件的编码方式,同时也可以直接在此处修改。2.修改项目的文件编码使用editorconfig文件。在工具......
  • IDEA 设置项目文件编码
    1.打开【Setting】2.设置项目文件编码。说明:Transparentnative-to-asciiconversion主要用于转换ascii,一般都要勾选,不然Properties文件中的注释显示的都不会是中......
  • python基础-is 和==的区别及编码和解码
    python基础-is和==的区别及编码和解码 is和==的区别 #a='alex@'#a1='alex@'#print(aisa1)#Fales#......
  • RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化......
  • URL编码的问题
    1.概述URL编码:URL编码会将字符转换为可通过因特网传输的格式。特点1.URL只能使用ASCII字符集来通过因特网进行发送。2.由于URL常常会包含ASCII集合之外的......
  • esp32使用simpleFoc来接入编码器计算角度与速度
    SimpleFOC是国外无刷电机爱好者,创立的一个开源无刷电机FOC控制项目。   第1章首页(simplefoc.cn)用这个库接编码器非常简单   这是文档  编码器设置(sim......
  • RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化、......
  • 常见的编码转换(CRC32爆破)
    题目文件流程1.拿到手是一个加密的压缩包有点懵逼2.网上找了一下说是需要crc爆破CRC爆破脚本链接找到每个文件的循环冗余校验码然后使用脚本爆破,发现几个有意......
  • VAE变分自编码器公式推导
    VAE变分推导依赖数学公式(1)贝叶斯公式:\(p(z|x)=\frac{p(x|z)p(z)}{p(x)}\)(2)边缘概率公式:\(p(x)=\int{p(x,z)}dz\)(3)KL散度公式:\(D_{KL}(p||q)=\int{p(x)log\frac{p(x)......