Base64编码
用途
我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。
严格来说base64不能算是一种加密,只能说是编码转换。设计使用base64的初衷,是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴。
字母表
Base64字母表(Alphabet),字符选用了"A-Z、a-z、0-9、+、/" 64个可打印字符。
编码过程
Base64共有64个字符,用6个bit位就可以全部表示,26=64.
那么怎么用6个有效bit来表示传统字符的8个bit呢?
8和6的最小公倍数是24,也就是说3个传统字节可以由4个Base64字符来表示,唯一的不足就是:编码后的数据比未编码的数据多出1/3。
"Man"对应的Base64字符是"TWFU"。
如果字符串的长度不是3的倍数时,要怎么办呢?
"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);
}
参考