前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库中如何安全储存用户的重要信息/密码?

数据库中如何安全储存用户的重要信息/密码?

作者头像
吃猫的鱼Code
发布2023-02-02 10:26:34
1.4K0
发布2023-02-02 10:26:34
举报
文章被收录于专栏:吃猫的鱼个人博客编程笔记
KYP8_H28(OTGJ{4`HO3@99G.png
KYP8_H28(OTGJ{4`HO3@99G.png

数据库中如何安全储存用户的重要信息/密码?

怎么样才能安全,有效地储存这些私密信息呢,即使数据库泄露了,别人也无法通过查看数据库中的数据,直接获取用户设定的密码。这样可以大大提高保密程度。

想要安全地储存用户的信息,密码,加密是肯定少不了的。

本文用php对其做简单的演示!

首先,先尝试以下最简单的不加密储存形式。

[D0BG4(Y)($299@UEQ@QN4P.png
[D0BG4(Y)($299@UEQ@QN4P.png

运行后显示结果: 我们可以看到,不加密,储存进数据库后,密码一眼就可以看穿,万一数据库被入侵,用户的账户财产,隐私等都会受到威胁!

~Y`77CAI(3UEFZ~B{CEWIND.png
~Y`77CAI(3UEFZ~B{CEWIND.png
接下来试试简单的加密处理

原理是,将用户设置的隐私信息,使用base64进行简单的单次加密,代码如下图所示!

0$B(3@5E_`(@WHA%B7%}1.png
0$B(3@5E_`(@WHA%B7%}1.png

下面是运行结果:

[BNZIV7IKCJRHQLMLCW9M7.png
[BNZIV7IKCJRHQLMLCW9M7.png

可以看到,通过简单的base64加密后的密码,已经变得不可读。目前达到了防小白的境界,一般普通人看到,概率是无法成功破解的。 但是只要遇上稍微会一点技术的人,试几次就能解开。 我们都知道,base64是一种简单的,可逆的加密形式。因此这样加密储存方式,并没有过多的作用!

接下来试试进阶加密方式

为了使加密不可逆,我们就需要用不可逆的加密方式,我们知道,MD5加密方式是不可逆的。

{collapse-item label="什么是md5加密?(点击展开)"} MD5(全称是message-digestalgorithm5)的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”为一种保密的格式。它的典型应用是对一段信息(message)产生信息摘要(message-digest),以防止被篡改。通俗地说MD5码就是个验证码,就像我们的个人身份证一样,每个人的都是不一样的。MD5码是每个文件的唯一校验码(MD5不区分大小写,但由于MD5码有128位之多,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的),凭借此特性常被用于密码的加密存储、数字签名及文件完整性验证等功能。通过MD5验证即可检查文件的正确性,例如可以校验出下载文件中是否被捆绑有其它第三方软件或木马、后门(若是校验结果不正确就说明原文件已被人擅自串改)。 {/collapse-item}

下面是用md5加密的代码示例

5~WOIR$WV8SYUTUK9.png
5~WOIR$WV8SYUTUK9.png

我们可以看到,用md5加密后的密码已经是乱序,并且由于md5加密的不可逆性,无法对其进行解密。

$85P03<code>Y2$[2U8~$</code>HX$K[0.png
$85P03<code>Y2$[2U8~$</code>HX$K[0.png

但是,单纯地只对用户设置的密码进行md5加密,是不足以保密用户隐私的。

如果用户使用弱口令密码,那么其密码加密后的md5值,也是不安全的。

例如:

{0S_6L@30E63U$HB1PV1AFS.png
{0S_6L@30E63U$HB1PV1AFS.png

这是一个网上找的,声称有着90万亿条md5加密数据的库。

我们试着用刚刚用md5加密后的密文,看看它能不能破解:

723d505516e0c197e42a6be3c0af910e

R5)ET8VPA4W4D89BYXY(BM.png
R5)ET8VPA4W4D89BYXY(BM.png

果然,这种弱口令密码一下子就被找出来了。

加密算法再次升级

为了使用户可能输入的密码为弱口令,我们可以在用户的设置的密码前面加上一串比较复杂的密钥,这样可以增加密码md5加密前的复杂性。

FXEW5CEONV@FQ_O2P$`}6{W.png
FXEW5CEONV@FQ_O2P$`}6{W.png

代码运行结果:

@KIDH[4AW@}LFQ~A8ZOO3M0.png
@KIDH[4AW@}LFQ~A8ZOO3M0.png

然后我们再将这个加密后的形式,看看还能不能被破解

}A~84~S(${)$`G}F$)3@BOJ.png
}A~84~S(${)$`G}F$)3@BOJ.png

不出所料,库中没有这个数据。

验证密码环节

在验证用户密码的时候,我们只需要再次将该加密过程执行一遍,然后将得出的md5加密后的结果与我们数据库中的MD5结果对比,即可验证用户是否输入正确的密码。


总结

通过我们上面所述,即可实现将用户输入的密码,用一个比较安全的形式储存在数据库里面,进而防止当数据库泄露或者被入侵的时候,用户数据遭到入侵,遭受损失!

本文共 1071 个字数,平均阅读时长 ≈ 3分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库中如何安全储存用户的重要信息/密码?
    • 接下来试试简单的加密处理
      • 接下来试试进阶加密方式
        • 加密算法再次升级
          • 验证密码环节
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档