认证过程中常用的加密算法MD5、Base64

在编程过程中,MD5加密算法和Base64编码都是十分常用的,那么MD5和Base64编码有什么作用和区别呢?

一、MD5

1)什么是MD5?

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 中被加以规范。

数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。

1996年后被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

2009年,中国科学院的谢涛和冯登国仅用了220.96的碰撞算法复杂度,破解了MD5的碰撞抵抗,该攻击在普通计算机上运行只需要数秒钟[3]

参考:https://zh.wikipedia.org/zh-cn/MD5

2)MD5的特点

  • 固定长度:任意长度的数据,算出的MD5值长度都是固定的。
  • 容易计算:从原数据计算出MD5值很容易。
  • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  • 弱碰撞:2004年,证实MD5算法无法防止碰撞。
  • 算法不可逆:根据加密后的值几乎很难推断出原始字符串。

3)MD5应用场景

存储密码:数据库中存储的是用户密码的MD5值,用于不可逆的特点,所以密码已不可见的方式存储,在认证对比时,只需要对比密文是否一致

文件一致性校验:比较文件前后的md5,判断文件是否出错或被修改

 

二、Base64编码

1)什么是Base64?

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。每6个位元为一个单元,对应某个可打印字符。3个字节有24个位元,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Za-z数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后BinHex的版本使用不同的64字符集来代表6个二进制数字,但是不被稱為Base64。

Base64并不是加密算法,而应该称为一个编码算法,因为标准Base64编码解码无需任何额外信息,即完全可逆。

Base64编码本质是一种将二进制数据转成文本数据的算法。

2)Base64特点

  • 简单编码
  • 算法可逆
  • 统一标准

3)Base64应用场景

由于Base64编码后的字符串只包含 [0-9a-zA-Z+/=] ,所以可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符,另外可以将图片等二进制文件转换为文本文件。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MD5计算的结果是一个128位(16字节)的散列值,而Base64是一种基于64个可打印字符来表示二进制数据的编码方法。这两者之间是不同的概念。MD5是一种信息摘要算法,用于确保信息传输的完整性和一致性,而Base64是一种编码方式,用于将二进制数据转换成可打印字符的文本数据。 如果你想对一个字符串进行MD5计算,并将计算结果以Base64编码的形式表示,你可以先对字符串进行MD5计算,然后将计算结果转换成Base64编码。具体步骤如下: 1. 使用MD5算法对字符串进行计算,得到一个128位的散列值。 2. 将散列值转换成二进制形式。 3. 将二进制数据按照每6比特(2的6次方=64)进行分组,并计算每组的十进制值。 4. 根据十进制值在Base64编码索引表找到对应的字符。 5. 将得到的字符拼接起来,即为Base64编码结果。 需要注意的是,Base64编码通常用等号(=)字符来替换最后的A,作为结束符号。在Base64解码时遇到等号时,即可知道一个Base64编码字符串的结束。 所以,如果你想对一个字符串进行MD5计算,并将计算结果以Base64编码的形式表示,可以先对字符串进行MD5计算,然后将计算结果转换成Base64编码。 #### 引用[.reference_title] - *1* *2* *3* [C++实战md5base64算法实现](https://blog.csdn.net/weixin_44834554/article/details/127074397)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值