1.1 原理介绍
(1)Base64是一种基于64个可打印字符来表示二进制数据的表示方法。其索引表如下:.
共包含64个可打印字符为:A-Z、a-z、0-9、+、/,另外还会有“=”或者“==”作为填充字符出现在编码中。
(2)编码规则
-
将待编码字符串每三个字节分为一组,每组24bit
-
将上边的24bit分为4组,每组6bit
-
在每组前添加两个0,每组由6bit变为8bit,总共32bit,即4byte
-
根据Base64编码对照表获取对应的编码值
上述图例中:“Man”经过Base64编码之后变为“TWFu”。
(3)字节数不足3个时
-
两个字节:2byte共16bit,按照编码规则,每6bit分为一组,则第三组缺少2bit,用0补齐,得到3个Based64编码,第四组完全没有数据则用“=”补上。因此上图“BC”经过Base64编码之后变为“QkM=”;
-
一个字节:1byte共8bit,按照编码规则,每6bit分为一组,则第二组缺少4bit,用0补齐,得到2个Based64编码,后两组完全没有数据都用“=”补上。因此上图“A”经过Base64编码之后变为“QQ==”。
1.2 C#代码
// Base64编码
public sealed class Base64
{
// Base64加密
public static string Base64Encrypt(string plaintext)
{
string ciphertext = "";
byte[] buffer = Encoding.ASCII.GetBytes(plaintext);
ciphertext = Convert.ToBase64String(buffer);
return ciphertext;
}
// Base64解密
public static string Base64Decrypt(string ciphertext)
{
string plaintext = "";
byte[] buffer = Convert.FromBase64String(ciphertext);
plaintext = Encoding.ASCII.GetString(buffer);
return plaintext;
}
}