不知道为什么这个转载来本来只是想收藏自己看的博客能有好几千访问量,排版还极差,内容也对搜标题来查找答案的新手不太友好,所以我觉得要重写一下该博客,减去用不上的内容,换成一些容易理解概念的例子。

 

1)密码是什么?

密码在中文里是“口令”(password)的通称。

密码是一种用来混淆的技术,密码的设计初衷是为了验证用户身份是否是可信任的(也就是说有了密码别人光知道我用户名是不能登录我的账户的)

 

2)什么是明文? 

明文的概念很简单,指的是任何没有经过加密的信息。

如:

1你随手新建的txt写的几个字。2你用通信软件和你的朋友说了声“你好“(当然这是假设该通信软件没有帮你加密通信内容的情况下)

如此种种,这些没有经过加密一旦被不怀好意的人截取了消息就能直接知道你的聊天信息,或者登上你电脑打开txt就能直接看明白你写的东西,都管叫明文(明文信息)。

与明文信息对立的是密文(密文信息\加密信息)

 

3)什么是密文?

密文的概念也非常简单,前面提到了,没有经过加密的内容是明文,那密文自然就是经过加密的内容了。密文的设计初衷是为了提高用户的密码的安全性,譬如如果你的密码不经过加密,那在一些场景登录的过程中可能直接将密码附加在url后面,此时一旦被第三方截取url,那密码的作用就没有了。

4)怎么加密?

其实加密操作没你想象中的复杂,就拿最简单的来说,一个字符串“abc”代表你的密码(原文),你将该字符串切割成三个变量,然后分别将这三个变量转换成int就能得到这三个字符在码表上的序号,接下来你可以将这些字符的序号+1或者-5(你喜欢怎么搞就怎么搞),最后将运算过后的字符码表序号再转换成字符,你就得到了和原文不一样的字符串了,而这个字符串就是密文,因为别人不知道你到底对原文做了什么变化。


要是你把这个密文传输到你的好友,如果你的好友已经知道你做过什么操作(知道你加密的规则),他再逆向(也就是解密)一次就能得到原文了,其传输过程中因为第三方不知道你的加密规则,即使截取了信息也不知道你写的是啥

 

5)加密的手段

密文之所以能提高安全性,是在于明文转化成密文的过程,这个过程你可以用你自己喜欢的规则去加密,也可以用现有的加密算法来加密。


那么常用的加密算法有:

1、    MD5加密MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。2、    DES加密DES设计中使用了分组密码设计的两个原则:混淆(confusion)和扩散(diffusion),其目的是抗击敌手对密码系统的统计分析。混淆是使密文的统计特性与密钥的取值之间的关系尽可能复杂化,以使密钥和明文以及密文之间的依赖性对密码分析者来说是无法利用的。扩散的作用就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速地扩展到较多的密文位中,以防对密钥进行逐段破译。3、    RSA加密它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,截止2017年被普遍认为是最优秀的公钥方案之一。 

以上是资料的介绍,对刚学的朋友来说肯定是难以理解的,但不要紧我简单解释一下,所谓加密算法说到底还是和第4节那个简单加密例子是一样的,都是字符按一定规则变化,或者字符交换位置。不同的是这些算法多了公钥和私钥这两个东西,这两个是现代密码学的奠基。我建议大家另行去了解一下,关键词“散列函数”“哈希算法”“现代密码学”。



拓展知识

1)为什么不允许在数据库里明文保存密码?

举几个新闻例子:

2017年10月,雅虎发布公告称,在2013年的数据泄露事件中,有大概30亿笔帐号(包含当时雅虎所有的用户)泄露,而不是之前所估计的10亿笔,数据泄露的影响范围远超过此前的估计。 

2017年3月,美国求职网站America’s JobLink(AJL)爆发了一起重大数据泄露事件,影响到美国十个州的众多求职者。在本起事件中,一名黑客利用AJL应用程序的一个漏洞窃取了480万笔求职者的数据,暴露的数据包括求职者姓名、生日和身份识别号码。

2017年11月,Uber主动公开了去年发生了一起严重的数据泄露事件,据悉,黑客通过外部代码托管网站GitHub获得了Uber在AWS上的账号和密码,从而盗取了5700万乘客的姓名、电子邮件和电话号码,以及约60万名美国司机的姓名和驾照号码。为了隐瞒此事件,Uber曾向黑客支付10万美元封口费。

2017年11月,媒体发布消息称,趣店百万学生的数据疑似外泄,泄露的数据出包括借款金额、滞纳金等金融数据外,甚至还包括学生父母电话、男女朋友电话、学信网账号密码等隐私信息。据称,此次数据泄露事件有可能是内鬼所为,内部人员主动泄露这些数据以进行报复。

2013年10月,国内安全漏洞监测平台披露,为全国4500多家酒店提供数字客房服务商的浙江慧达驿站公司,因为安全漏洞问题,使与其有合作关系的酒店的入住数据在网上泄露。数天后,一个名为“2000w开房数据”的文件出现在网上,其中包含2000万条在酒店开房的个人信息,开房数据中,开房时间介于2010年下半年至2013年上半年,包含姓名、身份证号、地址、手机等14个字段,其中涉及大量用户隐私,引起全社会广泛关注。

 

2)什么是撞库

撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。

譬如你在某网站A注册了一个账号,其注册的用户名和密码都和你QQ啊人人网啊其它账号的账密一样的。那么不巧的是该网站A没有将用户密码加密后存储到数据库而是明文存储,更不巧的是这个网站被黑客攻破了,黑客登进了网站的数据库,得到了用户们的账号密码,然后黑客用这些账号密码逐个去尝试登录QQ啊人人啊等等其它网站,虽然无脑,但总会碰上很多在不同网站使用相同账密的用户,SO..结果可想而知。

其实可以一句话概括什么是撞库“用网站A的账密去尝试登录网站B”。