安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 系统文档 > base64及其隐写原理

base64及其隐写原理

时间:2021-08-24来源:未知 作者:安云网点击:
一、base64编码 base64就是一种基于64个可打印字符来表示二进制数据的表示方法,包含字符A-Z、a-z、+、/64个字符。编码表如下图: base64编码原理: base64由64个字符组成,使用6位即可表示,而一个字节由8位二进制组成,所以最后需要
//内容来自安云网

一、base64编码

base64就是一种基于64个可打印字符来表示二进制数据的表示方法,包含字符"A-Z、a-z、+、/"64个字符。编码表如下图:




base64编码原理:


      base64由64个字符组成,使用6位即可表示,而一个字节由8位二进制组成,所以最后需要将8位拆分为6位二进制。


例如给定一个字符,首先需要对应ASCII码表的值,并将其转换为二进制,如“r”对应114,二进制为01110010。接着需要把8位二进制划分为6位,不足6位的在后面补零,使其是6的倍数。然后将其对应base64码表的字符,000000对应“=”即可。


例  01110010     (8位)


—>011100 100000 000000 000000   (6位)


—> 28         32          =            =          (十进制)


—> c            g           =            =          (base64码表符号)


即字符“r”进行base64编码后为“cg==”。


解码就是编码的逆过程:


       首先去掉等号, 再根据base64码表将对应字符转为二进制数,然后从左到右, 每8 个位一组, 并将多余位扔掉, 转为对应的 ASCII 码即可。




base64隐写原理:


       回顾上面的例子,图中红色部分就是隐写位(4位),因为解码过程中会丢掉多余的位(就是红色),所有在其中进行隐写不会影响解码的结果。




若把红色的位改成如下:




即字符“r”进行base64编码后为“co==”,解码结果仍然和“cg==”一样是字符“r”,所以在隐写位进行隐写不会修改最终的解码值。


接下来再举一例,编码字符“ro”


         r                      o


      01110010    01101111 


—>011100 100110  1111100  000000    (红色代表隐写位,2位)


—> 28         38          60            =         


—> c            m           8            =          (base64码表符号)


即字符“ro”进行base64编码后为“cm8=”。


从以上两个例子可以得出:若编码结尾有一个“=”,表示可隐写2位,两个“=”表示可隐写4位。

————————————————

版权声明:本文为CSDN博主「Rr.0」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/robacco/article/details/104867279


本文标题: base64及其隐写原理 安云网
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容