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加密的主要内容,如果未能解决你的问题,请参考以下文章

MD5加密加盐

加盐加密的介绍

Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

MD5加盐加密

MD5加密加盐

Shiro___加密加盐迭代