当前位置:  编程技术>.net/c#/asp.net

C# Base64编码函数

    来源: 互联网  发布时间:2014-10-14

    本文导语:  一. Base64的编码规则        Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每...

一. 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();

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Base64编码原理详解及c++编码解码实现
  • 请问有没有办法判断一串字符串是否经过base64编码
  • 简洁实用的Java Base64编码加密异常处理类代码
  • 弱弱的问一下如何用openssl进行base64编码和解码的代码实现
  • BASE64编码解码库 libb64
  • python获得图片base64编码示例
  • PHP安全的URL字符串base64编码和解码
  • 各种格式的编码解码工具类分享(hex解码 base64编码)
  • 在java里有关编码和解码的问题:比如对中文编码成BASE64或quoted-printable或者是其他的,应该用什么类什么方法?请赐教!!
  • 使用sendmail发信时,subject出现乱码的问题。(使用了标准的base64编码,outlook的时候看是正常编码,别的服务器还是有乱码例如mozilla收
  • 如何JavaMail不将附件Base64编码!
  • base64编码转换问题(在线。。。。。。。。。急)
  • 各位Java大侠救命!Base64编码如何做?
  • PHP base64编码后解码乱码的解决办法
  • 关于BASE64 编码解密的问题,高分求解
  • java命名空间javax.xml.crypto.dsig接口transform的类成员方法: base64定义及介绍
  • 为什么[-n "$LS_BASE_NAME" -a -z "${LS_BASE_NAME}.${group_name}.x" ]提示不合法?
  • java命名空间javax.swing.text.html.parser类dtd的类成员方法: base定义及介绍
  • 搭建snort安装BASE后出现问题?????????
  • java命名空间java.awt.font接口opentype的类成员方法: tag_base定义及介绍
  • Java Base64
  • java命名空间javax.swing.text.html类html.tag的类成员方法: base定义及介绍
  • 关于TEXT_BASE的定义
  • java命名空间java.io接口objectstreamconstants的类成员方法: tc_base定义及介绍
  • C语言的BASE64处理 b64
  • HTML 5 <base> 标签-规定页面中所有链接的基准 url
  • 二进制转BASE64问题,急
  • HTML <base> 标签
  • 请教:我把word.doc文档以bin.base64类型方式形成一个xml,上传到服务器后,如何在servlet中,读取这个流。。。
  • 全注解的SSH框架 ssh-base-framework
  • base href 使用方法详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3