C# Base64编码函数_C#教程

一. Base64的编码规则 
       Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。

例:将对ABC进行BASE64编码:
1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);
2、再取二进制值A(01000001)B(01000010)C(01000011);
3、然后把这三个字节的二进制码接起来(010000010100001001000011);
4、 再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值,(00010000)(00010100)(00001001)(00000011),其中蓝色部分为真实数据;
5、再把这四个字节数据转化成10进制数得(16)(20)(9)(3);
6、最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D),这里的值实际就是数据在字符表中的索引。

注:BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

二.解码规则
解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。

三. C#中的实现

复制代码 代码如下:

byte[] bytes = Encoding.Default.GetBytes("helloworld");
string str = Convert.ToBase64String(bytes);
Console.WriteLine(str);
Console.ReadLine();
//base 64 decode
bytes = Convert.FromBase64String(str);
Console.WriteLine(Encoding.Default.GetString(bytes));
Console.ReadLine();

时间: 2024-10-24 14:40:37

C# Base64编码函数_C#教程的相关文章

C#中Byte转换相关的函数_C#教程

 1.将一个对象转换为byte对象 public static byte GetByte(object o) { byte retInt = 0; if (o != null) { byte tmp; if (byte.TryParse(o.ToString().Trim(), out tmp)) { retInt = tmp; } } return retInt; } 2.将一个十六进制字符串转换为byte对象,字符串以0x开头 public static byte GetByteFormHe

C#中字符串编码处理_C#教程

GB2312是简体中文系统的标准编码 用"区" 跟"位"的概念表示 称之为区位码 区指代大的范围 位相当于偏移量.每个汉字占两个字节高位字节"的范围是0xB0-0xF7,"低位字节"的范围是0xA1-0xFE.它的规律好像是按拼音a到z的顺序排列的"啊"字是GB2312之中的第一个汉字,它的区位码就是1601为此我们现在用代码的方式输出一个汉字c#下是little字节序 b0跑后面去了. 复制代码 代码如下:  us

C#难点逐个击破(4):main函数_C#教程

还记得读大学时初识计算机编程时的C语言,Main(){},那时还不明白入口函数是什么意思,只知道照抄书本上的示例,一行一行地跑printf看. 在C#中Main()属于主入口函数,我们知识C.C#属于编译语言,可以想象为一段程序最开始的头部部分,由Main()函数进入逐语句进行编译后执行.假如html页面也称作编程语言的话,那么它就属于从上到下一句一句(下载)执行:js也是由上到下执行,不过js相当诡异,变量作用域要特别对待:在asp.net中一般情况下是以Page_Load(object se

提取HTML代码中文字的C#函数_C#教程

/// <summary>   /// 去除HTML标记   /// </summary>   /// <param name="strHtml">包括HTML的源码 </param>   /// <returns>已经去除后的文字</returns>   public static string StripHTML(string strHtml)   {    string [] aryReg ={       

给c#添加SetTimeout和SetInterval函数_C#教程

调用示例:   执行效果: 2. 实现代码: 复制代码 代码如下: /// <summary>  2         /// 在指定时间过后执行指定的表达式  3         /// </summary>  4         /// <param name="interval">事件之间经过的时间(以毫秒为单位)</param>  5         /// <param name="action">

C#根据年月日计算星期几的函数_C#教程

DateTime.Now.ToString("dddd",new System.Globalization.CultureInfo("zh-cn")); 今天在网上看见一些关于 C#实现的根据年月日计算星期几 的介绍:  算法如下: 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7在公式中d表示日期中的日数,m表示月份数,y表示年数. 注意:在公式中有个与其他公式不同的地方:  把一月和二月看成是上一年的十三

base64编码、解码函数

编码|函数 这是我看完几个base64编码.解码函数后自己改写的.因为,在中文操作系统的VBscript中,使用的是unicode字符集,所以很多base64编码.解码函数在理论上是正确的,但实际不能运行! 我加写了几个Unicode与Ansi编码转换的函数,现贴出来,请大家执教! 文件名称base64test.asp <% sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567

VC中BASE64编码和解码使用详解_C 语言

BASE64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本.完整的BASE64定义可见 RFC1421和 RFC2045.编码后的数据比原始数据略长,为原来的4/3.在电子邮件中,根据RFC822规定,每76个字符,还需要加上一个回车换行. 转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位.数据不足3byte的话,于缓冲区中剩下的Bit用0补足.然后,每次取出6个bit,按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXY

Asp:base64编码、解码函数

Asp:base64编码.解码函数www.xufei.net [2003-3-6] --------------------------------------------------------------------------------base64编码.解码函数 这是我看完几个base64编码.解码函数后自己改写的.因为,在中文操作系统的VBscript中,使用的是unicode字符集,所以很多base64编码.解码函数在理论上是正确的,但实际不能运行!文件名称base64test.as