JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)

本文详细介绍了编码中的Base64原理,包括编码和解码过程,并探讨了加密的基础知识,包括对称加密如AES,非对称加密如RSA,以及Hash算法的作用和特性。文章指出,Base64并非加密,而是编码方式,其主要用途在于数据转换而非安全保护。
摘要由CSDN通过智能技术生成

如果你还不清楚 JackHttp 是什么,请戳这里!!!


JackHttp 是一个网络框架系列,为什么还要分享编码和加密呢?主要有如下几个原因:

  1. HTTP 在网络传输过程中是明文的。
  2. HTTP 在网络传输过程中内容有可能被中间商篡改的。
  3. 浏览器,服务器都要求 HTTP 2.0 基于 HTTPS,而 HTTPS 使用到对称加密,非对称加密,Hash 算法。
  4. 编码和加密在我们 URL 文字编码、HTTPS 连接,TCP 连接中都经常使用。

带着这 4 个原因,开始我们今天的内容。

编码

很遗憾,说起来你可能不信,编码的定义从计算机发展至今,还没有一个完整的官方定义,(如果你有找到,请一定要告知我,感谢!)
但借助一些相对权威的机构定义及自己对编码的理解,浅谈一些编码相关的知识。

什么是编码?

编码是任意一种数据从一种形式或格式转换为另一种形式或格式,并且支持转换回来的过程。

Base64

好像很熟悉,但具体让我们说说 Base64 是啥?可能又说不上来,那么我问几个问题,大家思考下。

  1. Base64 是编码吗?
  2. Base64 是加密吗?(平时应该听过 Base64 加密这种说法吧)
  3. Base64 转换后的数据会变的更加安全吗?
  4. 使用 Base64 能提高效率吗?
  5. 为什么使用 Base64 ,Base64 的使用场景有哪些?

希望读者可以简单思考后,再阅读下文。

什么是 Base64?

将二进制数据转换成由 64 个字符组成的字符串编码算法。

具体由以下 64 个字符组成。
在这里插入图片描述
包含 “大写的 A -> Z 26 个字母 , 小写的 a -> z 26 个字母, 阿拉伯数字 0 -> 9 10个数字,运算符 + /” 共 64 个可见字符 。

了解到这里你可能会比较奇怪,为什么一定要用 64 个字符呢?
Base128 ,Base256 , Base32 不行吗?

ok,那么我们来弄明白 Base64 的编码原理,以上问题都将得到答案。

Base64 编码原理

例如我们需要对字符串 “Jack” 进行 Base64 编码,步骤如下:

  1. 将 "Jack " 拆分成 "J "、"a "、"c "、"k " 4 个字符,并获取到每个字符的 ASCII 码值。
    通过 ASCII 码对照表 我们可以获取到 "J "、"a "、"c "、“k " 的 ASCII 码值对应为"74”、"97 "、“99”、"107 "。

  2. Base64 是对二进制数据进行转换,所以我们需要将 ASCII 码值转换成对应的二进制数据,“01001010”、"01100001 "、“01100011”、“01101011”。

  3. 对二进制数据进行读取,为了确保转换后的任意数据都能用 64 个字符表表示出来,我们对二进制数据进行排列组合,如下图:
    在这里插入图片描述
    组合后会发现,64 个字母的字母表,最多可对应 26,也就是 Base64 一次转换读取最多只能读取 6 Bit,否则就有可能造成部分转换后的字符无法正常显示,出现乱码,转换后数据如下图:
    在这里插入图片描述

    解释: 一个英文字母占一个字节,一个字节占 8 Bit。

  4. 将转换后获得的二进制数据转换成 Base64 字符表中的“十进制索引”,然后对应 Base64 字符表索引取出索引值,以此获取最终转换后的数据。在这里插入图片描述

    注意:最后 1 位 Bit 数据读取如果如果长度< 6 ,则补 0 ,例子中最后的 “11”,转成十进制前的数据补码后的值为"110000 "。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackWaiting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值