MD5加密
Posted 杀手不太冷!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5加密相关的知识,希望对你有一定的参考价值。
MD5加密
基本概念信息
**首先什么叫做加密?**加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知道解密的方法,仍然无法了解信息的内容。
**对称加密?**对称加密的加密和解密用的是同一个密钥。
**非对称加密?**非对称加密的加密和解密用的是不同的密钥。凯琳现在想把一段数据传递给鲍勃,但是如果凯琳在网上使用明文传输,她担心她的这段信息会被别人获取到,所以怎么办呢?凯琳可以先得到鲍勃的公钥,然后使用鲍勃的公钥对明文进行一次加密,加密成密文,最后鲍勃获取到密文的时候,再使用自己的私钥解密,这样就可以了。
摘要算法?摘要算法也称为哈希算法,散列算法,可以将任意长度的数据转换成一个定长的,不可逆的数字。什么叫做定长呢?就是你的数据不管是多长,最后转化为摘要之后都是定长;什么叫做不可逆的数字?摘要算法不像对称算法和非对称算法,因为他们加密之后都是可以被解密的,但是摘要算法加密之后是不能够通过解密获取原文的,它的加密是不可逆的。
只要原文不同,计算的结果必然不同(几乎不用考虑重复的情况)。摘要算法用于对比信息源是否一致,因为只要数据源发生变化,得到的摘要信息必然不同,通常用于签名校验。
消息摘要算法的特点:
- 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。
- 消息摘要不是真正的随机,因为用相同的消息求两次摘要,其结果必然相同。
- 消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到与原信息相关的信息。
常见的摘要算法有:MD5,SHA-1,MAC,CRC等。
广泛应用于校验数据的完整性和敏感信息的传输和保存。
MD5算法:MD5信息摘要算法,一种广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
**什么叫做碰撞?**我们使用MD5加密的密文是无法被还原回来的,但是如果我们有一个保存常见密码和MD5密文映射关系的加密库,那么我们就可以通过对照密文,进而知道对应的原文是什么。
基本应用
**md5-min.js和md5.js的区别?**md5.js是格式良好的js,是给开发人员开的;md5-min.js是压缩版的js,是给浏览器看的。
md5前端加密如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="./md5.js"></script>
<script type="text/javascript">
/**
* md5加密之后 admin => 21232f297a57a5a743894a0e4a801fc3
* */
console.log("md5 => "+hex_md5("admin"));
/**
* 加盐(MD5没有办法通过算法进行解密,但是可以被暴力破解【彩虹表】,不够安全,彩虹表其实就是一个明文与密文
* 映射的数据库表)
* 盐就是一个特定的字符串(自己指定)的,用来和加密后的内容进行混合,混合后的内容再次进行md5加密,数据就更安全
* 比如:
* admin salt => 0x3d1eaaa
* 让文本和salt进行混合(随意)
* admin0x3d1eaaa
* 然后对混合后的文本进行md5加密操作,这样就算我们的密文被破解了出来,但是它也不知道我们的明文是什么
* */
</script>
</head>
<body class="index">
我是body
</body>
</html>
开发者涨薪指南
48位大咖的思考法则、工作方式、逻辑体系
以上是关于MD5加密的主要内容,如果未能解决你的问题,请参考以下文章