博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络数据安全
阅读量:7061 次
发布时间:2019-06-28

本文共 2173 字,大约阅读时间需要 7 分钟。

  hot3.png

数据在网络传输过程中,可能被黑客修改,也可能被植入木马。为了验证我们所下载接受到的数据是原来的数据,可以使用MD5.

MD5或者SHA

任何数据都可以通过散列,生成一个独一无二的128位的数字。这就是MD5的算法。所以使用MD5对某个文件进行计算,可以得到这个文件对应的MD5码。128位的二进制MD5码又可以使用16位十六进制的字符来表示。任何数据都可以使用MD5算法计算出唯一的MD5码。如果数据改变了,那相对应的MD5码也会改变。但是通过MD5码却无法反推出原来的数据.SHA与MD5原理与使用方法相同,只是散列算法不同.

数据--->MD5算法----->MD5码

很多文件下载网站都提供下载文件的MD5码。这样你在下载完文件以后,可以使用MD5校验工具,对下载的文件进行计算。

下载网站上的文件  ------------- 网站公布的MD5码

下载后的文件------MD5校验器---------------MD5码

把你的MD5码和网站公布的MD5码进行对比,如果一样,说明你的数据没有被篡改。

前段时间CSDN等各大网站密码泄露事件发生,这是因为有的网站使用明文密码存储。也就是说,它们把用户的密码存在了数据库中。一旦黑客侵入了数据库,用户的密码就泄露了。所以,有很多网站对密码进行MD5计算,然后把MD5码存放入数据库。这样,黑客即使得到了你的密码的MD5码,他也无法推出你的密码。

用户注册 –> 密码 -> MD5码 –>数据库

用户登录 –> 输入的密码 –>MD5输入值,跟数据库的MD5码比对.

网站永远没有你的密码,它只存放你的密码的MD5码。如果你的密码丢失,你无法找回密码。网站会随机给你生成一个密码,发到你的邮箱,你使用随机密码登陆,然后重设自己的新密码。

现在,MD5也不安全了,MD5可以被暴力的破解。尤其是对于密码这种字符长度特别短的。所以,黑客拿到你的密码MD5码后,还是可以反推出你的密码的。这时候需要网站对MD5进行改进。新的方法被称为salt。意思是往MD5码上撒盐。假设每个用户被随机分配一段字符串,这段字符串将伴随用户的账户生命周期.这段字符串被称为salt.以java为例:

MessageDigest md = MessageDigest.getInstance("MD5"); md.update(password.getBytes()); md.update(salt.getBytes()); byte result[] = md.digest();
由于MD5中撒了盐,这使得黑客无法反推出真正的密码.

RSA

MD5针对静态文件是合适的,但对于动态文件,MD5则不安全。所谓动态文件是动态产生的文件或内容,服务器在用户请求之前,都不知道这个文件是什么样子的,所以也不会有此文件的MD5码。只有当用户请求过来,服务器才通过计算动态产生了一个文件发送给用户。所以,文件的MD5码也是跟着文件一起动态产生的。这样子就无法提前把正确的MD5码公布给用户了。一个文件在传输过程中,可能和MD5码一起都被黑客替换。

这时候需要RSA,非对称的加密解密算法。RSA可以产生两个Key,一个key称为private key,由服务器保管,另一个key为public key,公开给所有人。RSA的算法如下:

一段明文 ---->使用private key加密---->加密后的数据----->使用public key解密----->恢复后的明文

使用private key加密后的数据只能通过public key来恢复,任何key都无法模仿private key加密后的数据。由此,服务器传输一段信息给用户,可以先使用private key加密,把加密后的数据传给用户。 用户收到数据,使用服务器公开的public key进行解密,恢复明文。

由于RSA加密效率很慢,所以对于一些可以被别人看到但不能被别人修改的明文,使用MD5+RSA的方式进行加密:

服务器端: 明文 --- 计算出MD5码 ------ 对MD5码进行RSA加密---- 发送明文和RSA加密后的MD5码
客户端: 接受明文和RSA加密后的MD5码 ---- RSA解密获取MD5码 ---- 对接受明文计算MD5码 -----对比解密后的MD5码和根据明文计算出的MD5码。

SSL

有时候访问一个网站的登陆页面,会发现网址起始策略为https://.这是因为服务器端对此资源开启了SSL的传输模式. SSL是一种传输保护机制,防止数据泄露.常用于登陆页面. SSL下的服务器和客户端使用的便是RSA算法对数据加密.SSL还包含了如何产生和交换key的方法.在firefox下面,你会收到一个提示,是否接受服务器发过来的认证证书,里面包含了服务器的public key.当点击接受,就拥有了服务器的public key,也就能解密服务器发过来的加密后的信息了. 客户端也会产生一个把自己的public key传输给服务器,客户端向服务器发送消息将使用自己的private key加密,然后服务器用客户的public key来解密.

转载于:https://my.oschina.net/xpbug/blog/115488

你可能感兴趣的文章
独家揭露网站内链建设seo优化的科学方法
查看>>
MVVM 模式介绍
查看>>
.NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?
查看>>
阿里云AI首席科学家闵万里:让萧山救护车等待时间至少降低50%,“城市大脑”是如何做到的...
查看>>
《Linux From Scratch》第二部分:准备构建 第四章:最后的准备- 4.2. 创建 $LFS/tools 文件夹...
查看>>
再谈数据外泄和数据库安全
查看>>
Java 程序优化:字符串操作、基本运算方法等优化策略
查看>>
[ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
查看>>
[译] 关于 React Router 4 的一切
查看>>
vivo联手火星情报局打造最强粉丝嘉年华:超级装备X20惊艳全场
查看>>
本田推出电动车和多功能移动机器人,2019年上市
查看>>
将DJANGO管理界面的filter_horizontal移到前面来复用
查看>>
苹果手机定位用户行迹:是否对信息安全构成威胁?
查看>>
金风科技澳洲首座20兆瓦光伏电站将于2017年投产
查看>>
Java 代理
查看>>
《Effective Debugging:软件和系统调试的66个有效方法》——第12条:将复杂的测试场景自动化...
查看>>
企业物联网安全的四个关键步骤
查看>>
盗版的软件更易被攻击 勒索钱财是黑客惯用形式
查看>>
SPI绿能宝与金沙江资本签署5亿美元可转债协议
查看>>
中英专家建言:未来城市发展要智慧化“留白”
查看>>