数据安全之--编码基础与加密基础、构建FTP服务器--实现文件共享、如何部署一个网站[【2019.9.29】

一、数据安全之–编码基础与加密基础

1.前言

在信息时代,数据重要性不言而喻,这时如何让数据更加的安全,就是我们需要关注的了,即对于传输的数据我们可能想进行一定程度的编码或加密。
2.以前端为例:常见数据编码方式
这里简单的介绍下前端js下的一些编码和加密方式:

① 对中文与空格编码:escape()和unescape()
我们可以使用js内置的escape()和unescape();方法对中文和空格进行编码和解码,它们常见于对文本中的中文和空格等进行编码处理,任意含有中文和空格的文本都可以使用(因为在很多环境下,中文与空格是无法被识别的,所以需要对齐进行编码处理)
使用示例

练习
(1)先将上面的实例实现一遍
(2)请使用这两个方法对:”hello,如果让你回到十年前,你会做什么?” 进行编码和解码

② 对中文与空格编码:encodeURIComponent(),decodeURIComponent()
为了防止黑客的跨站脚本攻击,我们在浏览地址栏中访问某个网站时,输入的网址一般也会将其中的中文和空格进行自动加密处理,当然实际上这也是一种文字编码方式。

浏览器地址编码实例

这种加编码式实际上就是使用encodeURIComponent()来完成的,然后我们还可以使用decodeURIComponent()来进行解密,如下:

手动的对文本进行编码和解码
我们还可以使用这两个方式来对普通的内容进行编码和解码,如下:

注意:
这两个方法常用于对浏览器地址栏地址进行使用,但是实际上任何含有中文与空格的文本都可以使用

练习
(1)打开百度搜索:“一个人如何才能时刻保持愉悦的心情”,然后将浏览器的地址栏复制出来查看是否中文是否已经被转码?如果转了,请将其转换回来。

(2)请使用这两个方法对:”hello,如果让你回到十年前,你会做什么?” 进行转码加密和解密

③ 对英文进行base64编码解码:btoa() 与 atob()
我们还可以使用一种比较流行的编码方式:base64,
他不仅可以对普通文本进行编码还可以对图片等进行编码。
当使用它对文本加密时,只能对英文(ASCII码)进行加密,如果含有中文需要处理下。
实例
对于不含有中文的文本,可以直接进行使用btoa和atob进行编码

对于含有中文的文本,可以先使用前面的两种方法对其中的中文进行处理下,然后在使用btoa和atob进行编码,如果不处理中文会报错的

对于有中文的编码后的字符,解码时也要解码两次,第一次将base64解码为正常内容,第二次将其中的仍被编码的中文解码还原

注意:

这两个方法一般用于对在网络中传输的数据进行使用,有普通的文本也有图片等

练习
1.请使用这两个方法对文本:hi,my name is zhangsan 进行base64编码与解码

(3)请使用这两个方法对:”hello,如果让你回到十年前,你会做什么?” 进行base64编码与解码。

3.学习加密算法前必须明白的概念:Hash(哈希值)
在看具体的算法之前,我们需要明白一个概念:什么叫做hash值?
① Hash值的形式
hash值也称之为散列值,即一段长度较短、位数固定的文本,一般hash值由hash算法产生。

② Hash值的作用
大家都知道,任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;
此时我们可以把人的指纹称之为人的hash值,即hash值的作用为唯一的代表某个事物(这个事物一般指程序中的数据文件)

你可以把哈希值简单地理解成是一段数、或一段字符串、或一个文件的指纹/身份证/DNA等,即这个hash值能够唯一标识他们。
③ Hash值的产生
hash值是由hash算法产生,通过一定的哈希算法将一段较长的数据(也可以是文件)映射为较短小的数据,这段小数据就是大数据的哈希值。

然后生成的hash值小数据能唯一的代表这个大数据或这个文件。
④ 典型的hash算法
典型的hash算法有MD5,SHA-256等比较出名的相关算法
⑤ hash值最显著的特点:唯一性

即Hash值是唯一的,一旦大数据发生了变化,哪怕是一个微小的变化,他的哈希值也会发生变化。
另外一方面,hash值既然能代表是指纹/DNA/身份证,那就保证了没有两个数据的哈希值是完全相同的。
⑥ hash值的用途:判断文件是否相同、密码验证
Hash值因为有唯一性的特点,所以它常常用来判断两个文件是否相同。
比如,从网络上下载某个文件,只要把这个文件原来的哈希值同下载后得到的文件的哈希值进行对比,如果相同,则表示两个文件完全一致,下载过程没有损坏文件。而如果不一致,则表明下载得到的文件跟原来的文件不同,文件在下载过程中受到了损坏。

Hash值因为有唯一性的特点,能唯一代表一个其他数据,所以用户的密码可以使用他的hash值来表示。
现在各个软件/网站等都要求用户进行注册,而用户注册就会产生用户密码,但是这个密码如果直接存入数据库又非常不安全,任何能操作数据库的人都可以直接使用看到用户的密码。
此时,我们就可以通过hash算法,生成此密码对应的hash值,然后将它存入数据库中,这样存入数据库的就是一堆谁也不认识的“hash值”了,即便网站拥有者他可以查看数据库,却也无法知道你的密码。
4.常见数据加密方式–MD5信息摘要算法
① 什么叫MD5信息摘要算法?
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm)也称之为MD5算法,他的目的主要是做信息摘要的。

他的原理是使用一种被广泛使用的密码散列函数来产生出一个128位(16字节)的散列值即hash值,用于确保信息传输完整一致。

即MD5算法实际上是一个hash算法,能够产生对应于某个文件或某些数据的唯一的hash值。
② MD5算法的特点?
MD5是一个为了得到hash值或者叫做散列值的hash算法(也称之为散列算法),而一个安全的散列算法需要满足如下两个条件,也是散列算法的两个特性。

(1)抗碰撞性。根据一个输入,找到一个其它输入得到相同的输出,在计算上是不可行的;
(2)不可逆性。根据一个输出,找到一个输入其散列值等于输出,在计算上是不可行的,即不可能从结果逆向推导初始值。

所以MD5的特点为:抗碰撞性 和 不可逆性

③ MD5加密的实现
(1)第三方MD5加密平台
MD5加密是一种常见的加密算法,不管是前端开发,还是后端开发,都有许多现成的库供我们使用,我们可以使用直接在代码里面进行调用。

当然,现在我们还没学过这些代码,所以我们这里就直接使用第三方的加密平台感受下加密方式即可。

一个MD5加密的第三方平台:http://www.jsons.cn/md5

(2)注意事项
1.按照理论分析MD5的加密一般而言是无法逆向破解的,所以相对比较安全。

2.不过在前几年,王小云院士对MD5算法做了研究,虽然还是无法破解其明文,但是却可以使用其他内容生成一样的数字签名,使得文件校验不在安全。

    即:     MD5(M1)=MD5(M2)

(3)网上所谓的MD5破解平台
现在网上存在不少所谓的MD5解码站点,其实并不是真的破解,因为理论上来说md5是无解的,但是有的MD5加密又确实能被“破解”掉,这是为什么呢?
其实这是因为破解网站采用的是:暴力破解方式【暴力生成各种字符串组合,然后进行MD5加密,然后把加密后的 字符和用户输入的字符进行对比,如果相同就说明你的明文是我暴力得到的字符串组合。很多用户的密码都不够复杂,所以很容易被这种方式生成出来】
一个在md5线破解平台:https://www.somd5.com/
(4)MD5破解预防方式
1)用户角度

不要写太简单的密码,经常换密码。

2)开发者角度

使用加盐的方式实现防破解。

所谓加盐:
在用户输入的固定内容上加上ABCDEF*&^%KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲等各种特殊字符,且长度够长,然…#等,一共添加32位,然后再做MD5。 这样几乎不会再有网站能给你破解出来了。
当然,用户注册时你这样加了盐,那么在他登录时,你也要按同样的规则把用户输入的内容加上相同的"盐"然后再比较。

5.常见数据加密方式–SHA系列加密算法
(1)SHA算法介绍
SHA算法被认为是一种比MD5更强悍的加密算法。

SHA指的是一系列的加密算法,有SHA-1、SHA-2、SHA-3三大类(其中SHA2又分为几种,如:SHA-224、SHA-256),由美国国家安全局(NSA)所规划,并由美国国家规范与技能研究院(NIST)发布。
而SHA-1已经被破解,SHA-3应用较少,目前应用广泛相对安全的是SHA-2系列中的SHA-256算法。
(2)SHA算法的思想
SHA算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段密文,即得到一个唯一的hash值的过程。(hash值也叫做散列值)
所以,SHA系列算法其实也是一种得到hash值的hash算法。
该算法是美国的政府规范算法,在很多安全协定中广为运用,包含TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为运用的杂凑函数)的后继者。 但SHA-1的安全性现在被密码学家严峻质疑,有学者曾经爆出NSA在SHA-1留下的后门。
虽然至今尚未出现对SHA-2有效的攻击,但是它的算法跟SHA-1基本上仍然相似,因此有些人开始发展其他替代的杂凑算法。
(3)SHA算法加密实现
同样的,对于SHA算法,前后端都有现成的算法库供我们进行调用,不过那是我们以后才会学的,所以这里我们仍然使用在线的第三方加密平台
http://www.ttmd5.com/hash.php?type=9

二、构建FTP服务器–实现文件共享

现实生活中的规则,我们称之为法律法规,互联网中的规则我么则称之为网络协议。它让网络世界变得有序了起来。
1.常见的网络协议
(1)IP 协议:英特网互联协议。规定了ip地址相关信息
(2)TCP协议:传输协议。 规定了字节形式内容的传输方式
(3)FTP协议: 文件传输协议。 规定了如何传送文件
(4)http协议: 超文本传输协议。规定了如何传输网页
(5)SSL协议: 安全套接层协议,为了给传输的内容进行加密
(6)socket协议:套接字协议,很多时候是用于即时通讯(微信、QQ)和消息推送
(7)SMTP协议:邮件发送协议
(8)POP3协议:邮件接收协议
然后我们知道,其中有个ftp协议,目的是用来传输文件。

OK,现在我们要学习的就是如何在ftp协议的规则下创建ftp服务器,用来实现文件的传输与共享…

2.如何构建ftp服务器
① 安装IIS
(1)搜索windows功能

(2)点进入windows功能列表

(3)找到我圈的这两个,也就是iis的全称

找到后完全打开他们,每一个子项都打开选中(这个东西,你勾选了父项,子项也不一定会选中的)由于高度有限所以我没有勾选完,但是你安装时一定要勾选完

(4)点击确定进行安装
安装需要一定的时间,安装好后就可以搜索使用了

如果你的windows搜索功能有问题,请重启下你的资源管管理器即可(打开任务管理器–》找到资源管理器进程–》重启)

(5)打开之后的页面

你看到右边有很多东西了吧,这就是我刚刚为什么叫你全部勾选完的原因,如果你没勾选完的话,那么右边就只会出现一部分的功能出来。

② 使用IIS创建ftp服务器

(1)在你电脑的任意位置创建一个空的文件夹
比如我在桌面创建了一个文件夹,叫做2019,
记住,你所创建的文件夹尽量不要包含中文和空格,否则后面解析可能会出现问题哦。
(2)展开电脑–》找到网站–》右键添加FTP站点

(3)完善站点名称和路径
站点名字随便填写,站点路径就以刚才创建的目录路径即可,注意在物理路径中尽量不要出现中文,否则识别可能会出问题。

(4)绑定IP地址和ssl安全设置
绑定了IP和端口后,就只能使用这个IP与端口来进行访问了,(221端口为默认端口,可以省略不写)

(5)完善身份验证和授权信息
身份验证勾选基本,授权信息是否允许读写由你自己决定,这里我们都勾选。

(6)完成–》访问
点击完成即可创建完成,然后别人访问时可以直接在资源管理器中输入
ftp:// 你的ip地址 : 端口 就能访问了,如下

(7)删除ftp服务器
在左边ftp找到你的ftp服务器右键删除即可

三、如何部署一个网站

1.开发者在本地开发完成(就有完成后的代码了)
2.为了让各地的用户使用,我们需要把代码上传到公网上
① 租用服务器(阿里云,腾讯云),盛放我们的代码
② 注册域名(阿里云,腾讯云),代表服务器的容易记忆的字母或者单词
③ 域名备案(半个月,20块钱左右)
④ 做域名解析: 把服务器和与连接在一起,实现通过域名访问服务器
3.等上10分钟左右,就能通过域名进行访问服务器,可以访问服务器上的代码,即我们的项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值