认证过程中常用的加密算法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-Z
、a-z
、数字0-9
,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后BinHex的版本使用不同的64字符集来代表6个二进制数字,但是不被稱為Base64。
Base64并不是加密算法,而应该称为一个编码算法,因为标准Base64编码解码无需任何额外信息,即完全可逆。
Base64编码本质是一种将二进制数据转成文本数据的算法。
2)Base64特点
- 简单编码
- 算法可逆
- 统一标准
3)Base64应用场景
由于Base64编码后的字符串只包含 [0-9a-zA-Z+/=] ,所以可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符,另外可以将图片等二进制文件转换为文本文件。
认证过程中常用的加密算法MD5、Base64相关推荐
- Java中常用的加密算法MD5,SHA,RSA
1. MD5加密,常用于加密用户名密码,当用户验证时. protected byte[] encrypt(byte[] obj){ try { MessageDigest md5 = MessageD ...
- radius mysql md5_在Free Radius的PAP认证过程中使用MD5密码
前一段时间,有个朋友过来问我关于802.1x的认证问题.具体的问题是这样的: 在802.1x的认证过程中,使用Free Radius加LDAP实现认证服务器,使用LDAP的原因是对方要实现集中管理帐户 ...
- linux中常用的加密总结--base64编码解码与openssl实现
linux中常用的加密总结–base64编码解码与openssl实现 一.base64 !!!base64是一种数据编码方式,可逆,不是严格意义上的加密算法,不能作为安全加密使用 -d,–decode ...
- security中常用的加密算法
本文来说下security中常用的加密算法 文章目录 概述 概述
- 利用计算机运算符编写检索式,计算机信息检索过程中常用的检索表达式
信息检索过程中常用的检索表达式 检索表达式是检索策略的具体体现之一,简称检索式.检索式一般由检索词和各种逻辑运算符组成.具体来说,它是用检索系统规定的各种算符将检索词之间的逻辑关系.位置关系等连接起来 ...
- AEO认证辅导,海关AEO取消了规范改进,认证过程中企业不能借助规范改进达标
根据新的认证办法,认证企业标准分为高级认证企业标准和一般认证企业标准,AEO新认证标准的通过条件除延续原标准要求的所有赋分标准项均没有不达标(-2分)情形以及认证标准总分在95分(含本数)以上外,还增 ...
- 开发中常用的加密算法大全初步总结
为什么要使用加密算法: 在开发的过程中,为了能够保证程序能够安全高效运行,数据信息不被泄露,我们通常都会对要操作的数据就行加解密,从而提高程序的安全性.比如常见的客户端和后台服务器的数据交互传输,我 ...
- sha java 应用_Java中常用的加密算法应用MD5,SHA,RSA
1. MD5加密,常用于加密用户名密码,当用户验证时. protected byte[] encrypt(byte[] obj) ...{ try ...{ MessageDigest md5 = M ...
- 常用的加密算法(md5,sha1,base64加密解密)使用
import org.apache.commons.codec.digest.DigestUtils; import java.util.Base64; import java.util.Scanne ...
最新文章
- mysql报错:Reading table information for completion of table and column names
- Java中如何使用Thread和Runnable创建的线程
- [PHP] 现代化PHP之路:composer的安装和升级
- java中类与类的关系_Java中类与类的关系
- 使用Netbeans开发App Engine Java
- SparkCore基础
- 移动一个网站集所使用的内容数据库
- 华为承诺的鸿蒙系统兑现没有,华为鸿蒙系统遭截胡,安卓12系统率先出手
- django官方文档3.0学习笔记 03
- 通过python实现同步修改本地电脑时间
- 【Windows】安装NVIDIA驱动 / 更新驱动
- 怎么关闭计算机安全,电脑中安全防护怎么关闭
- 理解PeopleSoft HRMS人力资源管理系统
- Frida的安装与使用
- Python数据分析基础技术之scikit-learn(史上最全面)
- 由微博图床挂掉之后想到的
- Liunx树莓派(ARM)开发篇—第十四章、树莓派Linux内核编译步骤(超详细、图文结合)
- 程序员如何轻松又愉快的学好英语
- 杰理之 MIC录音 vbat电压低于3.2v会有很强的底噪?【篇】
- SCI、EI、IEEE和中文期刊在查询中有什么区别?