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

分析问题

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

注意

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

   

   

  在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语句来提高效率。

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

  

答案

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

  

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

时间: 2024-09-30 09:31:39

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

Base64编码及其作用

转http://blog.csdn.net/benbenxiongyuan/article/details/7756912 Base64编码的作用:由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法.它使用下面表中所使用的字符与编码. 而且base64特别适合在http,mime协议下快速传输数据. base64其实不是安全领域下的加密解密算法.虽然有时候经常看到所谓的base64加密解密.其实base64只能算是一个编码算法,对数据

BASE64编码的图片在网页中的显示问题的解决

BASE64编码的图片在网页中的显示问题的解决 关于图片的Base64编码,你了解吗?

Base64编码原理分析

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位的状态只能是0或1: 字节:8个二进制位构成1个"字节(Byte)",字节是存储空间的基本计量单位.1个字节可以储存1个英文字母,2个字节可以存储1个汉字: Base64编码的作用 因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通

Python中的Base64编码的加密与解密

Base64 可以干些啥? Base64编码的作用: 由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法. 图片(and种子)base64编码传输 一种常用的内容快速加密方法(不安全,防君子不防小人) 为什么要使用 Base64 编码? 在网页图片传输中,一般在处理极小.极简的一些图片的时候可以使用到base64编码将图片直接写入css文件展示到网站上. 快速加密,常用与邮件内容传输,网站简单内容加密,跟MD5加密算法的区别在于这种算

针对base64编码和URIEncode的一点研究

Base64编码的作用 将任意的二进制比特串编码成由ASCii码中的64个可显示字符组成的字符串. 为什么需要base64编码? 所有的文件,本质上都是0.1组成的比特串,文本文件.二进制文件的区别只在于操作系统如何解读文件内容.前端最常用的html.css.js都是文本文件,而文本文件的所有比特都会被操作系统当做字符编码来解读(比如按照UTF-8编码规则来解读),所以,当我们想在一个文本文件里保存二进制文件的数据(比如在css文件里保存一张图片)时,就会遇到问题——比如,操作系统会强行把原本属

Atitit.Base64编码原理与实现设计

Atitit.Base64编码原理与实现设计 1. Base64编码1 1.1. 为什么要用自己的base64编码方案1 2. Base64编码由来1 3. Base64编码原理1 3.1. 具体来说,转换方式可以分为四步:2 3.2. 注意2 3.3. Padding3 4. URL安全的Base64编码3 1. Base64编码 1.1. 为什么要用自己的base64编码方案 防止apache codec  jdk的jar冲突. 2. Base64编码由来 Base64最早是用来解决电子邮件

从原理上搞定编码-- Base64编码

开发者对 Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际 上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该.大概介绍一下Base64的相关内容,花几分钟时间就可以彻底理解它.文 章下边贴了一个Base64的编解码器,方便阅读文章的同时来实验. 一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的限制,比

base64编码用在HTML(支持IE6、IE7、IE8)

在HTML使用base64编码, 叫做Data URI scheme. Data URI scheme目前支持的类型有:(2016-10-19) data:,文本字串data:text/plain,%sdata:text/html,%sdata:text/html;base64,%sdata:text/css,%sdata:text/css;base64,%sdata:text/javascript,%sdata:text/javascript;base64,%sdata:image/gif;b

从原理上搞定编码(四)-- Base64编码

开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该.大概介绍一下Base64的相关内容,花几分钟时间就可以彻底理解它.文章下边贴了一个Base64的编解码器,方便阅读文章的同时来实验. 一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送.这样用途就受到了很大的限制,比如图片二