今天想跟大家聊聊:“MD5加密了吗?”MD5是程序开发中非常常用的一种算法,很多人都用过。提到MD5,大多数人的反应是“这是一种加密算法”,了解多的人会说“可以用来加密密码”,了解多的人会说“MD5已经被破解了”。可能。”但是MD5是加密吗?加密是什么意思?MD5的破解是什么意思?是一类将任意数据转换成定长(或限长)数据的算法的总称,比如我叫张三,你叫李四,那么“人->名字”的算法被称为哈希算法。哈希算法通常用于制作数字指纹。数字指纹的意思是“你看到这个东西就好像你看到了原始数据一样”。MD5或SHA1码是原始文件的哈希值。有很多哈希算法,MD5就是其中之一,这就是MD5。因此,优秀的哈希算法通常需要碰撞概率低(即不同数据的哈希值通常不同)。什么是加密?加密是指数据转换后,数据变成另一种格式,没有除了拥有解密方法的人之外,其他人都可以将数据转换回来。因此,加密通常用于网络通信。因为任何人都可以在网络上获取通讯数据,在发送前对数据进行加密,送达后,对方解密,然后进行校验,可以防止网络上的窥视。比如众所周知的“安全”但很少有人知道“为什么安全”的HTTPS,就是通过加密算法保证网络安全。那么,是MD5加密吗?加密算法的目的是其他人无法成功查看加密后的数据,需要时可以解密数据重新查看数据。MD5算法是一种哈希算法。哈希算法的设计目标是自己决定的。大多数情况下是不可逆的,即你通过哈希算法得到的数据是任何算法都无法恢复的。因此,既然数据无法还原,就不能称为解密;既然不能解密,散列过程就不能称为“加密”。“不可逆加密”?如果你尝试搜索百度百科,你会发现一个“MD5加密”的词条:甚至还有一个词条叫做“不可逆加密算法”:在“不可逆加密算法”的词条下,MD5赫然在列。然而,他们都错了。甚至“不可逆加密算法”这个词也是人为的。你甚至可以在网上搜索一些博客,里面把加密算法分为两类:“可逆加密”和“不可逆加密”。其实,我们不能怪百度百科,也不能怪这些分类人。要怪也只能怪它了。数据转换相关的内容太多太复杂,导致我们在使用的时候容易混淆。这点小知识有什么用呢?在开发中,我们经常会遇到RSA、AES、BASE64、MD5、SHA1、SHA256、GZIP等词。它们的含义和使用场景不同。刚入行的时候,作为一个底层小码农,只要听同事的指点,让我用BASE64我就用BASE64,让我用MD5我就用会用MD5,不用问为什么。但是当你有了一定的工作经验之后,你应该慢慢开始了解这些内容,否则你不仅会在开发中遇到各种障碍,而且当项目中出现相关问题时,你甚至不知道是什么是错的。你的问题就是你同事的问题。做开发,谁都想往高处走,但是在往高处走之前,需要先确立自己的优势。所以如果你只是把这个当成一个“小知识”,用“是MD5加密”来向朋友炫耀自己的技能,或者在面试的时候问求职者,可能真的没什么用。要知道,有用的不是小知识,而是一个完整的知识体系,当你能轻松回答这些小知识时,就体现出一个完整的知识体系。如果你清楚它的本质,它是什么,它是干什么用的,它是怎么用的,它的相关知识是什么,它们各自的含义、用法和区别是什么,这样的系统知识,这种不断的自觉将一个人的知识转化为一个系统,将对你非常有用。
