每日必读(2) --Base64

一、 base64是什么?

按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。

二、 base64的作用

  1. 实现简单的数据加密,使用户一眼望去完全看不出真实数据内容,base64算法的复杂程度要小,效率要高相对较高。
  2. 某些系统或应用,只能使用ASCII字符,例如Email,需使用base64对数据进行编码

以上内容摘自http://www.cnblogs.com/apm70/articles/2358569.html

三、base64原理

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。编码原理如下所示:

(1)base64的编码都是按字符串长度,以每3个8bit的字符为一组,

(2)然后针对每组,首先获取每个字符的ASCII编码,

(3)然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节

(4)然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节

(5)然后将这4个8bit的字节转换成10进制,对照Base64编码表,得到对应编码后的字符。

四、base64字符映射表

五、base64例程

            // 一个字节
            byte []  b = new byte [] { 0x01};
            string s = Convert.ToBase64String(b,0,1);
            byte [] be = Convert.FromBase64String(s);

            // 两个字节
            byte[] bs = new byte[] { 0x01,0x02};
            string ss = Convert.ToBase64String(bs, 0, 2);

            // 三个字节
            byte[] bss = new byte[] { 0x01, 0x02,0x03 };
            string sss = Convert.ToBase64String(bss, 0, 3);
时间: 2024-10-12 16:24:52

每日必读(2) --Base64的相关文章

人工智能行业每日必读(01·16)

北京地铁正研究「刷脸」安检方案 1 月 16 日消息,北京市人大代表.北京市地铁运营有限公司党委书记.董事长谢正光透露,正在探索基于乘客信用的智慧安检模式,加强乘客信用体系建设,建立地铁『白名单』及快速安检通道制度.」据悉,目前,「刷脸」的快捷安检方案正在研究中,将在客流量较大的车站先行试点. 来源:http://www.egsea.com/news/detail?id=553902 云测数据荣登2019「ToB行业影响力·产品价值榜」 1月14日,2019 ToB行业影响力价值榜单重磅揭晓.云

每日必读(1)

将读书的内容归类,总结.便于日后查找.与大家分享. MySQL: (1).最重要,最与众不同的特性是存储引擎结构,将查询处理及其他系统任务与数据的存储/提取分离.表中的字段的存储引擎可以任意设定. (2).存储引擎队友优化查询有影响. (3).读写锁. (4).锁粒度.表锁匙最基本的锁策略,并且是开销最小的策略.行级锁最大程度支持并发. WPF (1).WPF单位,一个月设备无关的单位 1/96英寸,(DPI)

每日必读消息及通知

1. 华科大机械学院研究生教育通知 2.研究生院通知公告 3.培养计划通知 4.华中大校通知 5.学校邮件消息 6.Hub 系统 原文地址:https://www.cnblogs.com/Sonny-xby/p/11478578.html

为什么每天都在学习,生活还是没有任何改善?(你每天只有24个小时,能把两件事做到专家的级别就已经是人中龙凤了)

作者:刘教练 来源:刘教练(ID:liucoaching) 在这个浮躁的时代,坚守自己的选择,专注地投入其中,你才会走得更远.■■■ 我有一个大学同学,只看他的朋友圈,你一定不知道他是做什么的. 今天你看到他在参加吴晓波读书会,明天也许在看罗辑思维的演讲:今天研究互联网风口转向了何方,明天又对网红时代的来临言之凿凿:今天听说新媒体火了,明天就开始问别人“你知道六神磊磊吗?”:今天向往着诗和远方,明天又在李银河阿姨爱与性的教导中思考人生的乐园. 奥斯卡来了,他为小李子感天动地:诺贝尔来了,他为村上

为什么每天都在学习,生活还是没有任何改善?

作者:刘教练 来源:刘教练(ID:liucoaching) (引用地址:http://www.cnblogs.com/rollenholt/articles/5562776.html) 在这个浮躁的时代,坚守自己的选择,专注地投入其中,你才会走得更远.■■■ 我有一个大学同学,只看他的朋友圈,你一定不知道他是做什么的. 今天你看到他在参加吴晓波读书会,明天也许在看罗辑思维的演讲:今天研究互联网风口转向了何方,明天又对网红时代的来临言之凿凿:今天听说新媒体火了,明天就开始问别人“你知道六神磊磊吗?

Java基础学习第二天

================每日必读==================== 写代码: 1.明确需求.我需要实现什么需求? 2.分析思路.我需要怎么实现需求? 3.确定步骤.我的每一部分思路需要使用到哪些语句,方法,对象? 4.代码实现.使用代码表现我的思路. ps:每天看一遍,每天向前进... ================每日必读==================== package code.day01; public class Demo {    public static v

Java基础学习第一天

================每日必读==================== 写代码: 1.明确需求.我需要实现什么需求? 2.分析思路.我需要怎么实现需求? 3.确定步骤.我的每一部分思路需要使用到哪些语句,方法,对象? 4.代码实现.使用代码表现我的思路. ps:每天看一遍,每天向前进... ================每日必读==================== Java概述: 1.Java是什么? Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++

从“众筹之王”破产 看无人机创业必须要迈的四道坎

毫无疑问,无人机是在当前智能硬件领域中最火的一类产品.资本和玩家纷纷涌入,各大众筹平台上的新产品也层出不穷. 不过就在上周,Zano无人机,这个2014年年底Kickstarter的众筹冠军,未坚持到自己的一周年生日便宣布倒闭,15000多台订单大多无法交货,支持者的340万美元打了水漂. 根据Zano自己的公告,其问题出在原型机过渡到量产阶段所存在的巨大且不可预见的软硬件调校误差,其不仅干扰到了生产进度,也直接影响到了实际的性能. 在众筹期间的宣传口径中,这款预计售价245美元的无人机只有手掌

强力推荐!那些你不能错过的 GitHub 插件和工具

以代码托管平台起家的 GitHub 网站,已然成为全球程序员工作和生活中不可或缺的一份子.从优秀的企业,到优秀的程序员,都将自己最优秀的代码作品存放在这片开源净土里,供彼此学习交流. GitHub Trending 栏目甚至已经成为 IT 从业人员的新闻日报,每日必读.在之前的一篇文章中,我也有讲到 GitHub 对于我们程序员个人的重要性:聊聊 GitHub 对于程序员的品牌价值. 既然 GitHub 这么重要,又被我们使用得这么频繁,那关于 GitHub 的一些优秀浏览器插件或者其他工具,我