如何在数据库中存储加密后的密码?

在我们日常开发运维平台中,如果公司对安全要求比较高,一般数据库中都存储的都是用户加密后的密码,这样即使某些人侥幸得到数据库权限,也无法得知用户明文密码,这主要是从安全角度来考虑的,那如何将用户输入的明文密码转为加密后的密码呢? 我们今天这篇文章就给出一个小例子,让大家看看如何实现,按惯例,我们先上代码:

脚本逐行解释, 前几行是导入的标准模块,hashlib模块作用是生成密码散列和消息摘要,getpass模块是用户输入密码,不在控制台回现,sqlite3模块是python与sqlite库交互的接口。脚本再往下是定义了2个函数,user_info()函数是得到用户输入信息,main()函数将用户输入的信息加密入库,hashlib.sha224是单向散列算法,sha是安全散列算法缩写(Secure Hash Algorithm),另外还有SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种散列算法(大家都可以试试,直观印象是数字越大加密后得到的字符串越长),hexdigest()函数返回字符串的摘要,并且摘要是一系列16进制数字。其它行就不说了,都是之前我们见过的内容,这样在数据库中存储的就是加密后的密码了,这篇就到这里了,那现在我们已经有了存储用户信息的库,那下篇我们来看看如何对用户的输入的用户名和密码进行验证。