阅读 199

md5加密科普,关于平时数据库密码的保存

今天来讲一下加密,讲的是md5的相关知识科普。

MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

MD5主要特点: 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样

一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文可以是无数多个。比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数。也就是一共有2^128种可能,大概是3.4 * 10^38,这个数字是有限多个的,而但是世界上可以被用来加密的原文则会有无数的可能性

由于md5的是不可逆的,所以并没有解密一说法。那么md5广泛应用在什么地方呢?

image.png

用于密码管理

当我们需要保存某些密码信息以用于身份确认时,如果直接将密码信息以明码方式保存在数据库中,不使用任何保密措施,系统管理员就很容易能得到原来的密码信息,这些信息一旦泄露, 密码也很容易被破译。为了增加安全性,有必要对数据库中需要保密的信息进行加密,这样,即使有人得到了整个数据库,如果没有解密算法,也不能得到原来的密码信息。MD5算法可以很好地解决这个问题。

当我们登录时候,需要对比客户输入的密码md5值和数据库的是否相同就行,当md5值相同,那就是登录成功,否则就是登录失败。所以一般情况下,我们上一些网站或者软件上的密码,无论是公司什么级别的人,都是取不到的。在我们看来,MD5值就是一串没有规律的乱码而已。所以一般我们丢了密码,那就只能重置密码,我们会将保存的密码再一次用md5加密,覆盖原来已经保存的,而保存在数据库里面的就成了另外一个md5值。

上面总结的是后端服务器常用到的MD5加密,给大家科普一下数据库是里面是怎么保存的。而实际应用中有很多直接可以使用的md5模块,我们直接使用就行了。

import hashlib
m = hashlib.md5()
m.update(b'123')
m.hexdigest()

#加密后结果 202cb962ac59075b964b07152d234b70复制代码

这是用python做的一个简单案例。

欢迎和我讨论有关程序的问题,也可以答疑。关注公众号:诗一样的代码,交一个朋友。


作者:诗一样的代码
链接:https://juejin.cn/post/7015409185189789733


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐