【编码和加密】BASE64--ASCII--HASH

Base64 加密特征

  1. 每三个字节变成四个字节

    字节数/3 余1,在最后添加 ==。例如 % 的bash64 编码为 JQ==

    字节数/3 余2,在最后添加 =。例如 % 的bash64 编码为 YWI=

  2. 每76个字符加一个换行符

  3. 最后的结束符也要处理

举个例子

example 转换为二进制之后(利用ASCII 转换的)

01100101 01111000 01100001 01101101 01110000 01101100 01100101

example 长度为7,不是3 的倍数,缺少两个字节,要在最后加上两个字节的 0,也就是16位0

01100101 01111000 01100001 01101101 01110000 01101100 01100101 00000000 00000000

然后我们将其按照6位1字符排好

011001 010111 100001 100001 011011 010111 000001 101100 011001 010000 000000 000000

每6位前面 填充00之后得到

00011001 00010111 00100001 00100001 00011011 00010111 00000001 00101100 00011001 00010000 00000000 00000000

转换为 十进制

25 23 33 33 27 23 1 44 25 16 0 0

对照表用字符替换之后得到

ZXhhbXBsZQAA

,由于最后两位是自动补充上去的,再将最后的AA换成==即可

ZXhhbXBsZQ==

HASH(散列函数)

把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。

这种转换是一种压缩映射,也就是,散列值的空间远小于输入的空间,不同的输入可能会散裂成相同的输出,所以不可能从散列值来确定唯一的输入值。

作用:安全地存储密码,查找重复记录,快速存储和检索数据

MD5

消息摘要算法版本5:它是一种 Hash 算法。将任意长度的数据映射为128bit的数据。可用于完整性校验

MD5的输出可以是16位,也可以是32位。其中16位是 32位的 str.substring(8, 24) (第9到24位)

特点

  • 不可逆
  • 唯一性

计算过程

  1. 数据填充。将数据填充为512的倍数
  2. 循环计算,将第一个分组 经计算得出的md5值,用作下一个分组的状态输入

SHA-1

将任意长度消息生成固定长度为 160bit 的数据,目前SHA-1已经被破解

SHA-2

也是一种 HASH 算法,但是输出的散列值 根据 不同的分类,输出的固定长度会不一样

SHA-2的分类:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。

应用

  • 目前数字签名中的 SSL 算法中使用的就是 SHA-2 算法
  • 比特币

ASCII 编码

是基于拉丁字母的一套电脑编码系统

任何字符要通过计算机通信,都要先转化为ASCII码,然后再转为二进制。如果需要base64编码,那么接下来就是Base64编码的流程了

ascii编码对照表

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Buffedon

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

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

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

打赏作者

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

抵扣说明:

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

余额充值