这里是修真院后端小课堂,本篇分析的主题是

【什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?】

每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?】

大家好,我是IT修真院深圳分院第10期的JAVA学员,一枚正直纯洁善良的java程序员。

今天给大家分享一下,修真院官网Java任务5,深度思考中的知识点—什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?

1.背景介绍

1.1    什么叫密码
            密码是一种用来混淆的技术,使用者希望将正常的(可识别的)信息转变为无法识别的信息。但这种无法识别的信息部分是可以再加工并恢复和破解的。密码在中文里是“口令”(password)的通称。

2.知识剖析

2.1 什么是明文密码?   
            “明文密码”(Cleartext Password),即传输或保存为明文的密码。具体是指保存密码或网络传送密码的时候,用的是没有隐藏、直接显示的明文字符,而不是经过加密后的密文。如密码为123,那么密文密码是***,明文密码则是123。从信息安全的角度出发,任何网络服务都不应该保存或发送明文密码。

2.2    什么是密文密码? ? 
            
                密文是加了密的的文字,明文是加密之前的文字。密文是对明文进行加密后的报文。

2.3    为什么不允许在数据库里明文保存密码?
             用明文保存密码有很大的信息安全隐患。
一般数据库里还存有用户的姓名、手机号、用户名等信息,一旦数据库发生泄漏,再加上用户的明文密码,攻击者就可以用用户名和密码去其他网站尝试登陆(因为往往用户会将多个网站的密码根据习惯设成一样的),一旦登陆成功,就会造成很严重的后果。
            
            2.4    一般使用的加密方式有哪些?:
         2.4.1.MD5加密(1)
              MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,
              并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新
              计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
              
          2.4.一般使用的加密方式有哪些?
            2.4.1.MD5加密(2)
            MD5算法具有以下特点:
            1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
            2、容易计算:从原数据计算出MD5值很容易。
            3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
            4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
           
         2.4.一般使用的加密方式有哪些?
            2.4.2.DES加密
            DES设计中使用了分组密码设计的两个原则:混淆(confusion)和扩散(diffusion),其目的是抗击敌手对密码系统的统计分析。混淆是使密文的
            统计特性与密钥的取值之间的关系尽可能复杂化,以使密钥和明文以及密文之间的依赖性对密码分析者来说是无法利用的。扩散的作用就是将
            每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速
            地扩展到较多的密文位中,以防对密钥进行逐段破译。
            
          2.4.一般使用的加密方式有哪些?
            2.4.3.RSA加密
            它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,
            RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法
            相结合的方式,即信息采用改进的DES或IDEA密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息
            摘要。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,
            经历了各种攻击的考验,逐渐为人们接受,截止2017年被普遍认为是最优秀的公钥方案之一。
            
           2.4.一般使用的加密方式有哪些?
            2.4.4.对称加密算法
            加密者和解密者使用相同的密码,这种方式的优点是加解密效率高,缺点是安全系统偏低,因为中除需要传递密钥,所以有被截获的风险。
            传递密钥的过程常需要和对称加密方式配合使用,如上所述。
            常见的这种方式有 DES,AES.
            优点:算法公开、计算量小、加密速度快、加密效率高、可逆
            缺点:双方使用相同钥匙,安全性得不到保证
            现状:对称加密的速度比公钥加密快很多,在很多场合都需要对称加密
            
            2.4.一般使用的加密方式有哪些?
            2.4.5.RSA加密(非对称加密算法)(1)
            非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
            非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
            公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,
            那么只有用对应的公开密钥才能解密
            
            2.4.一般使用的加密方式有哪些?
            2.4.5.RSA加密(非对称加密算法)(2)
            特点:
            非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快    
            对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,
            而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了
            
            2.5.MD5加密的弊端?如何解决?
            由之前MD5的实现方法可知,任何一个相同文件、字符串生成的MD5值都是一样的。比如"123456"的MD5值任何时候生成的都是
            "e10adc3949ba59abbe56e057f20f883e"并且,随着现在计算机技术的不断发展,可以通过MD5值去逆推到原来的明文密码。因此
            就需要在加密时在给它一个随机生成的值,掺到原密码中进行加密。这个值就叫盐值。

3.常见问题

如何对密码进行MD5加盐加密

4.解决方案

见编码实战

5.编码实战

6.扩展思考

6.1    明文密码泄露的危害?
            
               可能会被不法分子通过撞库的方式去其他网站获取更多的个人信息。
                
                  2014年12月25日,12306网站用户信息在互联网上疯传。对此,12306官方网站称,网上泄露的用户信息系经其他网站或渠道流出。据悉,此次泄露的用户数据不少于131,653条。该批数据基本确认为黑客通过“撞库攻击”所获得。
                
      
            6.2 如何避免出现这种情况?
            
               一方面,网站运营者要保护好自己的数据库,并且在保存用户关键信息时要进行加密保存。
            另一方面,我们在注册不同网站时注意设置不同的密码,尽量不要出现一个账号密码就能登录所注册的所有网站的情况。

6.3.密码为什么不能用Hash存储? 
            单向Hash算法(MD5, SHA1, SHA256等)可以保证管理员几乎不能恢复原始密码。但它有两个特点:
            1)从同一个密码进行单向哈希,得到的总是唯一确定的摘要。
            2)计算速度快。随着技术进步,尤其是显卡在高性能计算中的普及,一秒钟能够完成数十亿次单向哈希计算。

7.参考文献

CSDN
            百度百科

8.更多讨论

8.1    明文密码泄露的危害?
            
               可能会被不法分子通过撞库的方式去其他网站获取更多的个人信息。
                
                  2014年12月25日,12306网站用户信息在互联网上疯传。对此,12306官方网站称,网上泄露的用户信息系经其他网站或渠道流出。据悉,此次泄露的用户数据不少于131,653条。该批数据基本确认为黑客通过“撞库攻击”所获得。
                
      
            8.2 如何避免出现这种情况?
            
               一方面,网站运营者要保护好自己的数据库,并且在保存用户关键信息时要进行加密保存。
            另一方面,我们在注册不同网站时注意设置不同的密码,尽量不要出现一个账号密码就能登录所注册的所有网站的情况。

8.3.密码为什么不能用Hash存储? 
            单向Hash算法(MD5, SHA1, SHA256等)可以保证管理员几乎不能恢复原始密码。但它有两个特点:
            1)从同一个密码进行单向哈希,得到的总是唯一确定的摘要。
            2)计算速度快。随着技术进步,尤其是显卡在高性能计算中的普及,一秒钟能够完成数十亿次单向哈希计算。

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

------------------------------------------------------------------------------------------------------------
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。

技能树.IT修真院

什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?相关推荐

  1. 128位java_求一个java算法,用128位密钥的AES加密128位明文,得出的密文还是128位...很着急,非常感谢各位大神,求救!...

    求一个java算法,用128位密钥的AES加密128位明文,得出的密文还是128位...很着急,非常感谢各位大神,求救! 关注:157  答案:1  mip版 解决时间 2021-02-03 09:1 ...

  2. 什么叫明文,什么叫密文、密码、密钥,为什么在数据库里不采用明文保存密码?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 密码概述 明文概述 密文概述? 什么是密钥? 加密的手段(以下三种) MD5加密 DES加密 RSA加密 密码概述 密码学中 ...

  3. RSA密钥长度、明文长度和密文长度

    RSA密钥长度.明文长度和密文长度 本文整理RSA加解密中必须考虑到的密钥长度.明文长度和密文长度问题知识,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,以后还会补充几篇RSA基础知识专 ...

  4. 密码学——Hill体制密码中已知明文M和密文C求解密钥矩阵K的两种方法之逆矩阵求解法和待定系数求解法

    本文主要解决古典密码中的Hill体制密码在已知明文M和密文C的情况下求解密钥矩阵K的两种方法:①求逆矩阵②待定系数法. 如若不懂Hill体制的古典密码可以参照我上一篇文章密码学--几种典型的古典密码体 ...

  5. 怎么知道 网站是否直接明文保存密码_忘记账号密码 浏览器记住了 怎么找回密码?...

    对于健忘又没有使用保存密码插件的习惯的人来说,忘记密码是经常的事情. 而大家知道的也就是通过网站的找回密码选项,通过邮箱,手机号,人工等方式找回密码,但是如果是个小网站,没有找回的功能,或者当时是随便 ...

  6. java中aes明文长度_AES密文与明文长度的关系

    AES介绍 严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128位,密钥长度则 ...

  7. mysql 密码文件改成密文_需求:实现数据库密码通过密文的方式存储在配置文件中 | 学步园...

    需求:实现数据库密码通过密文的方式存储在配置文件中 配置文件:evoucher.conf[可以是任意自定义格式结尾的配置文件]格式 是以  Key:Value存在的. 例如如下: # evoucher ...

  8. android中编辑框明文密文系统图标,Android设置密码的明文和密文显示【原创】

    我们经常会在一些软件上发现在密码输入框的后面有一个按钮可以使我们输入的密码显示为密文(●●●●●或者*****),也可以显示为正常的可见状态,效果如图. 具体实现如下: 布局: android:lay ...

  9. php openssl做什么,php php_openssl.dll文件有什么用?

    本篇文章是对php中php_openssl.dll的作用进行了详细的分析介绍,需要的朋友参考下 一.openssl简介数据加密是信息信息传输中的一个重要组成部分.任何信息都以明文方式传输,确实是个很不 ...

  10. java程序设计输入输出实验_20145320《Java程序设计》第五次实验报告

    20145320<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18: ...

最新文章

  1. 华中科大计算机冯丹,华中科大南加校友会欢迎母校代表团
  2. Goroutine池
  3. Jsp页面的几种传参方式
  4. Android UI 备忘:DrawerLayout
  5. CentOS7:搭建SVN + Apache 服务器
  6. visual studio 2012 下配置OPENcv3.1 和CMAKE问题总结
  7. perl 语言(数组)
  8. 计算机毕设 SpringBoot+Vue旧物置换系统 旧物交易管理系统 旧物二手交易系统Java Vue MySQL数据库 远程调试 代码讲解
  9. Windows环境下用nmake编译libevent
  10. php实现五维雷达图,Unity 属性雷达图
  11. svn: E155004: There are unfinished work items in ‘D:\workspace\xxx‘; run ‘svn cleanup‘ firs
  12. php怎么判断qq内置浏览器,PHP判断是否是微信打开,浏览器打开的方法
  13. android https握手失败,Android SSL错误握手失败
  14. 用加密算法给女朋友写封情书
  15. 华清远见上海中心22071班--11.19作业
  16. Vue 数组删除和修改元素后页面立即刷新
  17. vs code下载慢的解决方法
  18. 录制动画时AnimationClip.SetCurve的relativePath问题
  19. MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置
  20. php面向对象有什么用

热门文章

  1. java 跨站脚本攻击_XSS(跨站脚本攻击)漏洞解决方案
  2. 字节跳动A/B实验背后的秘密:样本量计算
  3. 变频器RS485通讯协议
  4. 详细解析单片机控制继电器原理图以及其作用
  5. 【sketchup 2021】草图大师的场景优化工具2【草图大师动态组件的详细使用说明和各个函数说明】【重要】
  6. 实用金属材料手册_各种金属材料单位重量计算公式(汇总版)
  7. 手游传奇架设教程_「教程」传奇新手架设简单教程,自己做GM,「GEE版本」
  8. 继谷歌之后 雅虎退出中国音乐市场
  9. 一些音视频相关概念学习笔记
  10. java elasticsearch 5.4.0 x-pack client