码迷,mamicode.com
首页 > 其他好文 > 详细

简述BASE64编码的作用以及C#中对其的支持

时间:2014-08-13 10:10:25      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   io   strong   数据   

分析问题

  和传统的编码不同,BASE64编码的设计致力于混淆那些8位字节的数据流。在网络传输、邮件等系统中,BASE64的编码方式被广泛的应用。BASE64不属于机密机制,但它确实把明码编程了一种很难识别的形式。

注意

  BASE64的算法十分简单,BASE64把所有的位分开,并且重新组合成字节,新的字节只包含6位,最后再在每个字节前添加两个0,组成新的字节数组。例如一个字节数组包含3个字节,BASE64编码时将把其分配到4个新的字节中(3*8/6=4),其中每个字节只填充低6位,最后把高2位置0。下图说明了BASE64的算法。

  bubuko.com,布布扣 

   bubuko.com,布布扣

   在C#中通常使用Convert类型来进行BASE64编码和解码,它可以进行8位的字节数组和BASE64编码的字符串的转换。以下代码展示了其用法。

using System;
using System.Text;

namespace Test
{
    class Base64
    {
        static void Main()
        {
            string str = "abcde";
            //Generate UTF8 byte array
            byte[] bytes = Encoding.UTF8.GetBytes(str);
            //Converted into Base64 string
            string base64 = BytesToBase64(bytes);
            Console.WriteLine(base64);
            //Back to UTF8 byte array.
            bytes = Base64ToBytes(base64);
            //Back to string.
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
            Console.Read();
        }


        //Converts 8-bit byte array into Base64 string
        static string BytesToBase64(byte[] bytes)
        {
            try
            {
                //Conversion is not successful will throw an exception
                return Convert.ToBase64String(bytes);
            }
            catch (ArgumentNullException)
            {
                return null;
            }
        }
        //Converts Base64 string into 8-bit byte array
        static byte[] Base64ToBytes(string base64)
        {
            try
            {
                //Conversion is not successful will throw an exception
                return Convert.FromBase64String(base64);
            }
            catch (ArgumentNullException)
            {
                return null;
            }
            catch (FormatException)
            {
                return null;
            }
        }

    }
    
}

  如以上代码所示,Convert类型提供了非常简单的接口以支持BASE64字符串和8位字节数组之间的转换,但需要注意的是,Convert类型在转换失败时将直接抛出异常,读者在任何时刻都必须把Convert类型的操作语句放在try、catch块中。

注意

  Convert类型的设计目的是进行内容的转换,这和类型转换是完全不同的两个概念。Convert类型同样也可以实现类型转换的功能,但读者应该使用is、as语句来提高效率。

  下面是以上代码的执行结果。

  bubuko.com,布布扣

答案

  BASE64编码是一种用于混淆明码的编码方式,其算法是把原先的8位字节数组顺序分配到新的6位自己数组中,再在每个字节的高2位填充0来组成新的8位字节数组。在.NET中Convert类型可以用来进行BASE64字符串和8位字节数组之间的转换。

  

 

简述BASE64编码的作用以及C#中对其的支持,布布扣,bubuko.com

简述BASE64编码的作用以及C#中对其的支持

标签:style   blog   http   color   使用   io   strong   数据   

原文地址:http://www.cnblogs.com/wangjinpeng-study/p/3909288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!