文章目录

  • 1.加密算法简介
    • 1.1 对称加密(Symmetric Key Algorithms)
    • 1.2 非对称加密(Asymmetric Key Algorithms)
    • 1.3 非对称加密 RSA
  • 2.消息摘要(Message Digest)
  • 3.数字签名(Digital Signature)
  • 4.数字证书(Digital Certificate)
    • 4.1 数字证书的由来
    • 4.2 数字证书的内容
    • 4.3 数字证书的申请
    • 4.4 数字证书的发布机构
    • 4.5 数字证书解决公钥的受信问题
  • 5.HTTPS 简介
    • 5.1 HTTPS 的由来
    • 5.2 HTTPS 通信过程
    • 5.3 HTTPS 的优点
    • 5.5 HTTPS 的缺点
  • 参考文献

1.加密算法简介

加密算法一般分为两种:对称加密和非对称加密。

1.1 对称加密(Symmetric Key Algorithms)

对称加密算法使用的加密和解密的密钥一样,比如用秘钥 123 加密就需要用 123 解密。实际中秘钥都是普通数据在互联网传输的,这样秘钥可能会被中间人截取,导致加密被破解。其过程如下:

//加密
E=ENC(M, K)//解密
M=DEC(E, K)

其中 M 是消息,K 是密钥,E 是加密后的密文,ENC() 和 DEC() 分别是加密和解密算法。

常用的对称加密算法包括:
(1)DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;
(2)3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;
(3)AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

对称加密算法的特点主要有:
(1)加密方和解密方使用同一个密钥;
(2)加解密的速度比较快,适合数据比较长时使用;
(3)密钥传输的过程不安全,且容易被截获,密钥管理也比较麻烦。

1.2 非对称加密(Asymmetric Key Algorithms)

所谓非对称,是指该算法需要一对密钥,使用其中一个加密,使用另一个才能解密。把密钥分为公钥和私钥,公钥是公开的所有人都可以认领,私钥是保密的只有一个人知道。

非对称加密算法主要有:
(1)RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
(2)DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
(3)ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

假如接收方 B 有一对密钥:私钥(KB)和公钥(KPB),其中 KPB 是公开的。发送方 A 用接收方 B 的公钥 KPB 对消息加密,加密过程如下

E=ENC(M, KPA)

接收方 B 收到密文后使用自己的私钥 KB 进行解密,解密过程如下:

M=ENC(E, KA)

这样,即使密文被中间人截获,由于其不知道接收方 B 的私钥无法破解密文,所以消息仍然是安全的。

1.3 非对称加密 RSA

RSA 加密算法是最常用的非对称加密算法,由 Ron Rivest、Adi Shamir、Leonard Adleman 于1977 年在麻省理工学院工作时提出,RSA 是三者姓氏首字母的拼接。

RSA 的安全性是基于极大整数因数分解的难度。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解方法的话,那么用 RSA 加密的信息的可靠性就会急剧下降。但找到这样的算法可能性是非常小的。至今为止,世界上还没有任何可靠的攻击 RSA 算法的方式,只要其密钥长度足够长,用 RSA 加密的信息无法被解破。

2.消息摘要(Message Digest)

消息摘要可以将消息哈希成一个长度固定的唯一值。值唯一的意思是不同的消息转换的摘要是不同的,并且同样的明文其摘要必定一致。该过程不可逆,即不能通过摘要反推明文。常用的消息摘要算法有 MD5、SHA1、SHA256、SHA512 等。

3.数字签名(Digital Signature)

有了 RSA,我们可以将其用于网络传输数据的加密。比如 A 要发送一封 Email 给 B,A 不想让任何其他人在传输中看到 Email 的内容,做法就是使用 B 的公钥对 Email 加密,只有 B 的私钥能够解密。

某天出意外了,有黑客冒充 A 给 B 发送 Email,并且也用 B 的公钥加密,导致 B 无法区分这封邮件是否来自 A。怎么办?此时 A 可以用自己的私钥加密 Email,那么 B 收到邮件后如果用 A 的公钥可以解密邮件,那么证明这封信肯定来自于 A。

通过这个例子我们可依基本明白非对称加密了的作用了。总结如下:
(1)公钥的作用:对内容本身加密,使用私钥解密,保证内容不被其他人看到;
(2)私钥的作用:加密内容摘要,使用公钥解密,如果成功证明内容的来源;
(3)公钥和私钥是配对关系,公钥加密就用私钥解密,私钥加密就用公钥解密,用错的密钥尝试解密会报错。

仔细思考会发现,假设 A 用自己的私钥对 Email 加密发送,会存在下面的问题:对文件本身加密可能是个耗时过程,比如这封Email 足够大,那么私钥加密整个文件以及拿到文件后的解密无疑是巨大的开销。使用数字签名可以解决这个问题。
(1)A 先对这封 Email 执行哈希运算得到消息摘要;
(2)然后 A 用自己的私钥对消息摘要加密,生成数字签名;
(3)把数字签名加在 Email 正文后面,一起发送给 B。当然,为了防止邮件被窃听,对邮件内容使用 B 的公钥进行加密,但这个不属于数字签名范畴;
(4)B 收到邮件后用 A 的公钥对数字签名解密,成功则代表 Email 确实来自 A,失败说明有人冒充,此时数字签名起到了身份认证的作用;
(5)B 对邮件正文通过自己的私钥解密后执行哈希运算得到摘要;
(6)B 会对比第 4 步数字签名的 Hash 值和自己运算得到的 Hash 值,一致则说明邮件未被篡改。此时数字签名用于数据完整性的验证。

整个过程图示如下:

通过上面的例子可以发现数字签名是非对称密钥加密技术与数字摘要技术的实际应用,主要有两个作用:
(1)对数字签名使用发送方的公钥解密,根据解密是否成功用于身份认证;
(2)将解密后的消息摘要与收到的消息的摘要进行比对,用于消息的完整性校验。

4.数字证书(Digital Certificate)

4.1 数字证书的由来

在了解数字签名的由来和作用后,仔细想想你会发现存在如下问题:
公钥是公开的并且可以自行导入到电脑,如果有人比如 C 偷偷在 B 的电脑用自己公钥替换了 A 的公钥,然后用自己的私钥给 B 发送 Email,这时 B 收到邮件后,实际上使用的是 C 的公钥进行解密,这时已被 C 冒充 A 给他发邮件,结果他无法察觉。

确实会存在这种情况,这里问题的根源就在于,大家都可以生成公私钥对,无法确认公钥到底是谁的。 如果能够确定公钥是谁的就不会有这个问题了。例如如果经过某种检查,能够发现 B 获取的公钥不是 A 的就好了。解决办法就是数字证书。

4.2 数字证书的内容

先大概看下什么是数字证书,一个证书包含的主要内容有(包含不限于):
(1)颁发者(Issuer)。
指出是什么机构发布的这个证书,也就是指明这个证书是哪个机构创建的,常见的机构有CA(Certificate Authority,数字证书认证中心)。

(2)所有者(Subject)。
这个证书是发布给谁的,或者说证书的所有者,一般是某个人、公司、机构的名称,或者公司网站的网址等。

(3)生效时间(Valid from)。
证书有效期的起始时间。

(4)失效时间(Valid to)。
证书有效期的结束时间。 过了有效期限,证书就会作废,不能使用了。

(5)公钥(Public key)。
非对称加密算法中的公钥。

(6)指纹算法(Thumbprint algorithm)。
生成数字证书指纹的散列算法,一般为 SHA1 。

(7)指纹(Thumbprint )。
根据数字证书中的指纹算法对数字证书进行散列计算获得数字证书的摘要。

(8)签名算法(Signature algorithm)。
产生数字证书的数字签名所使用的加密算法。这样就可以使用证书发布机构证书里面的公钥,根据这个算法对数字证书的数字签名进行解密,获得数字证书的指纹。指纹的加密结果就是数字签名。

注意:
(1)数字证书的数字签名是如何产生的?
其过程是对数字证书摘要使用数字证书发行者的私钥采用签名算法进行加密获得,用来保证证书的完整性和确认该证书由数字证书发行者颁发。可见,数字证书发行者除了给别人发布证书外,他自己本身也有自己的证书。

(2)证书发布机构的证书是哪里来的呢?
证书发布机构的数字证书(一般由他自己生成)在我们的操作系统刚安装好时(例如 Windows 7 等操作系统),这些证书发布机构的数字证书就已经被微软(或者其它操作系统的开发机构)安装在操作系统中了,微软等公司会根据一些权威安全机构的评估选取一些信誉很好并且通过一定的安全认证的证书发布机构,把这些证书发布机构的证书默认安装在操作系统里面,并且设置为操作系统信任的数字证书。这些证书发布机构自己持有与他自己的数字证书对应的私钥,他会用这个私钥加密所有他发布的证书的指纹作为数字签名。

4.3 数字证书的申请

举个例子方便大家理解,假设我们公司 “Dablelv Inc.” 花了 1000 块钱,向数字证书认证中心 CA 为申请了一张证书。注意,这个证书发布机构 CA 是一个大家公认并被一些权威机构接受的证书发布机构,我们的操作系统里面已经安装了 CA 的证书。CA 在给我们发布证书时,把 Issuer、Subject、Public key、Valid from、Valid to 等信息以明文的形式写到证书里面,然后用一个指纹算法计算出这些数字证书内容的一个指纹,并把指纹和指纹算法用自己的私钥进行加密,然后和证书的内容一起发布,同时 CA 还会给一个我们公司 “Dablelv Inc.” 的私钥给到我们。我们花了1000 块钱买的这个证书的内容如下:

Issuer:CA
Subject:Dablelv Company
Valid from:某个日期
Valid to:某个日期
Public Key:一串很长的数字
{证书的指纹和计算指纹所使用的指纹算法}[CA的私钥|RSA] //这个就是CA对这个证书的一个数字签名,表示这个证书确实是他颁发的,有什么问题他会负责
证书其它内容

其中{证书的指纹和计算指纹所使用的指纹算法}[CA的私钥|RSA]表示使用 CA 的私钥,采用 RSA 对证书的指纹和计算指纹所使用的指纹算法进行加密生成的一个数字签名。

注意:如何确保证书的合法性且是我们 “Dablelv Inc.” 公司的证书呢?
使用者在打开证书时,读取证书中的 Issuer 为 CA,然后会在操作系统中受信任的发布机构的证书中去找 CA 的证书,如果找不到,那说明证书的发布机构是个不受信的发布机构,证书可能有问题,程序会给出一个错误信息。 如果在系统中找到了 CA 的证书,那么应用程序就会从证书中取出 CA 的公钥,然后对我们 “Dablelv Inc.” 公司的证书里面的指纹和指纹算法用这个公钥进行解密,然后使用这个指纹算法计算 “Dablelv Inc.” 证书的指纹,将这个计算的指纹与放在证书中的指纹对比,如果一致,说明 “Dablelv Inc.” 的证书肯定没有被修改过并且证书是 CA 发布的,证书中的公钥肯定是 “Dablelv Inc.” 的。对方然后就可以放心的使用这个公钥和我们 “Dablelv Inc.” 进行通信了。

4.4 数字证书的发布机构

其实所有的公司都可以发布证书,我们自己也可以去注册一家公司来专门给别人发布证书。但是很明显,我们自己的专门发布证书的公司是不会被那些国际上的权威机构认可的,人家怎么知道你是不是个皮包公司?因此微软在它的操作系统中,并不会信任我们这个证书发布机构,当应用程序在检查证书的合法信的时候,一看证书的发布机构并不是操作系统所信任的发布机构,就会抛出错误信息。也就是说 Windows 操作系统中不会预先安装好我们这个证书发布机构的证书,不信任我们这个发布机构。

为什么一个证书发布机构受不受信任这么重要?我们举个例子。假设我们开了一个皮包公司来为别人发布证书,并且我和微软有一腿,微软在他们的操作系统中把我设置为了受信任的证书发布机构。现在如果有个小公司叫 Wicrosoft 花了 10 块钱让我为他们公司申请了一个证书,并且公司慢慢壮大,证书的应用范围也越来越广。然后有个奸商公司 JS Company 想冒充Wicrosoft,于是给了我 10000 块,让我为他们颁布一个证书,但是证书的名字(Subject)要写 Wicrosoft,假如我为了这 10000 块真地把证书给了他们,那么他们以后就可以使用这个证书来冒充 Wicrosoft 了。

如果是一个受信合规的证书发布机构,比如你要向他申请一个名字叫 Wicrosoft 的证书,它会让你提供很多资料证明你确实可以代表 Wicrosoft 这个公司,也就是说他回去核实你的身份。证书发布机构是要为他发布出的证书负法律责任的。

到这里,你可能会想,那我们自己不就可以发布证书了吗,为何还要花钱去申请?我们自己当然也可以成立证书发布机构,但是需要通过一些安全认证等等,只是有点麻烦。另外,如果数字证书只是在公司内部使用,在公司的所有机器上把自己设置为操作系统信任的证书发布机构,这样以后公司发布的证书在公司内部的所有机器上就可以通过验证了。但是这只限于内部应用,因为只有我们公司自己的机器上设置了信任我们自己这个所谓的证书发布机构,而其它机器上并没有事先信任我们这个证书发布机构,所以在其它机器上,我们发布的证书就无法通过安全验证。

4.5 数字证书解决公钥的受信问题

了解了数字证书,我们就可以使用数字证书来保证公钥是可信的。

还是以 A 给 B 发送邮件为例。
(1)首先 A 去找证书中心(CA,Certificate Authority)申请数字证书,为公钥做认证。证书中心用自己的私钥,对 A 的数字证书做了数字签名,生成 A 的数字证书。

(2)A 在邮件正文下方除了数字签名,另外加上这张数字证书。

(3)B 收到 Email 后,从操作系统中受信任的发布机构的证书中去找 CA 的数字证书,从 CA 的数字证书中拿到 CA 的公钥,用 CA 的公钥解密这份数字证书,拿到了受信的 A 的公钥,然后验证数字签名,后面流程不再赘述,参见小节 “3.数字签名”。

注意:
(1)要是有 1 万个人要给 B 发邮件,难道 B 要保存 1 万份不同的 CA 数字证书吗?
不需要,CA 中心给可以给 B 一份“根证书”,里面存储 CA 公钥来验证所有 CA 分中心颁发的数字证书。CA 中心是分叉树结构,类似于国务院公安部->省公安厅->市级公安局,不管 A 从哪个 CA 分支机构申请的证书,B 只要预存根证书就可以验证下级证书可靠性。

(2)如何保证 CA 的根证书的可靠性?
CA 中心是获得社会绝对认可和有绝对权威的第三方机构,这一点保证了 CA 根证书的绝对可靠。如果根证书都有问题那么整个加密体系毫无意义。

5.HTTPS 简介

数字签名和数字证书可以用于文件,当然也能用于 HTML 网页数据。HTTPS 就是数字签名和数字证书一个具体应用。

5.1 HTTPS 的由来

超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息,HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读取其中的信息。因此,HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等支付信息。此外,使用 HTTP 协议与服务端进行通信时,也无法得知服务端的身份,以及传输数据是否被篡改。总的来说,HTTP 的安全缺陷有:
(1)无法验证服务端的身份;
(2)无法保证数据完整性;
(3)无法保证数据传输不被窃听。

HTTPS 的出现是为了解决 HTTP 协议的上述缺陷。HTTPS 使用数字签名+数字证书可以解决前两个问题,很多大型网站比如 baidu.com 都会采用 HTTPS 协议进行数据传输。点击可以查看证书,另外浏览器都会内置 CA 根证书来对这些网站的服务器证书进行校验。

然后,再用 SSL(Secure Sockets Layer)协议对传输通道加密,保证数据传输不被窃听,解决了第三个问题。

5.2 HTTPS 通信过程

HTTPS 协议就是 HTTP+SSL 协议。HTTPS 为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

下图所示其连接和通信过程:

HTTPS 客户端向服务端发起请求连接与安全通信的过程主要有如下几个步骤:
(1)建立 HTTPS 请求。
客户端向服务端发送 HTTPS 请求。

(2)生成公钥和私钥。
服务端收到请求之后,生成公钥和私钥。公钥相当于是锁,私钥相当于是钥匙,只有私钥才能够打开公钥锁住的内容。

(3)返回公钥。
服务端将公钥(数字证书)返回给客户端,数字证书里面包含有很多信息,比如证书的颁发机构、过期时间等等。

(4)客户端验证数字证书。
客户端收到数字证书之后,首先会验证其是否有效,如颁发机构或者过期时间等,如果发现有问题就会抛出异常,提示证书存在问题。

如果没有问题,那么就生成一个随机值,作为客户端的密钥,然后用服务端的公钥加密。

(5)发送客户端密钥。
客户端用服务端的公钥加密密钥,然后发送给服务端。

(6)服务端收取密钥,对称加密内容。
服务端收到经过加密的密钥,然后用私钥将其解密,得到客户端的密钥,然后服务端把要传输的内容和客户端的密钥进行对称加密,这样除非知道密钥,否则无法知道传输的内容。

(7)加密传输。
服务端将经过加密的内容传输给客户端。

(8)获取加密内容,解密。
客户端获取加密内容后,用之前生成的密钥对其进行解密,获取到内容。

以上便是 HTTPS 完整的通信过程。

5.3 HTTPS 的优点

尽管 HTTPS 并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但 HTTPS 仍是现行架构下最安全的解决方案,主要有以下几个好处:
(1)使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)HTTPS 协议是由 HTTP + SSL 协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、篡改,确保数据的安全和完整性;
(3)HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

5.5 HTTPS 的缺点

虽然说 HTTPS 有很大的优势,相对与 HTTP 而言,也存在不足之处。
(1)HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近 50%;
(2)HTTPS 连接缓存不如 HTTP 高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL 证书需要支付一定费用,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用;
(4)SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗;
(5)HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。


参考文献

[1] 百度百科.RSA
[2] 百度百科.数字签名
[3] 数字签名原理简介(附数字证书)
[4] 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)
[5] 数字证书原理.博客园
[6] 通俗理解数字签名,数字证书和https
[7] HTTP与HTTPS的区别
[8] HTTPS连接过程以及中间人攻击劫持

对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与 HTTPS 简介相关推荐

  1. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

  2. 隐私计算加密技术基础系列(下)对称与非对称加密的应用场景

    本章是<隐私计算加密技术基础>系列文章的最后一篇,感慨下,终于写完了,这个春节假期除了陪家人就是写着三篇文章了.其实写之前并没有觉得是多么难的事情,感觉这些原理自己都比较清楚,但是随着写的 ...

  3. 对称加密非对称加密混合加密

    对称加密&非对称加密&混合加密 写于前 iOS中常在哪些场景应用到 写一个系列 本文概要 对称加密(Symmetric Cryptography) 非对称加密(ASymmetric C ...

  4. Linux加密和安全篇(一)gpg、对称和非对称加密、哈希算法

    对于linux运维工作者而言,加密技术已经很早就用于数据的存储和数据之间的交换.我们可以会为了防止你的网站.服务器或者系统,我们会使用一些手段来防止一些恶意的攻击或者访问.一下就对linux的安全和加 ...

  5. 对称加密 非对称加密

    目录 一.加解密算法 二.算法体系 三.对称加密 四.非对称加密 五.混合加密机制 六.DES加密原理 七.3DES加密原理 八.AES加密原理 九.RSA加密原理 十.EIGamal加密原理 十一. ...

  6. 对称加密非对称加密怎么一起使用(初级版)

    对称加密 加密和解密使用相同的密钥,使用一把钥匙,所以叫对称加密,对称 加密包括多种算法,如:DES,3DES,AES 加密长度一般小于256位,防止数据被泄. 优点:加密和解密的速度快.缺点:因为使 ...

  7. 在线支付系列【3】支付安全之对称和非对称加密

    有道无术,术尚可求,有术无道,止于术. 文章目录 前言 信息安全 加密机制 核心概念 对称加密 非对称加密 JCE 对称加解密 1. 创建密钥 2. 加密 3. 解密 非对称加解密 1. 创建密钥 2 ...

  8. Linux系统安全概述-sudo授权-pam认证机制-对称加密-非对称加密-md5-数字证书

    内容: 17.1 Linux系统安全概述-su-sudo授权 17.2 pam认证机制概述 17.3 对称加密-非对称加密方法 17.4 md5-sha1-哈希算法使用方法 17.5 CA证书的作用 ...

  9. HTTPS(对称加密+非对称加密+证书)

    目录 1. 加密和解密 HTTPS工作过程 2. 对称加密 3. 对称加密 4. 既然都有非对称加密了,那为啥还要有对称加密 5. 中间人攻击 6. 引入证书 HTTPS 也是一个应用层协议. 是在 ...

最新文章

  1. Django源码分析4:staticfiles静态文件处理中间件分析
  2. shell脚本中的变量
  3. 机器学习简介之基础理论- 线性回归、逻辑回归、神经网络
  4. Echart遇到的问题:tooltip提示框大小异常
  5. 以下linux进程内存空间中按低地址,Linux 内核开发 - 进程空间
  6. 从零开始入门 K8s | 理解 RuntimeClass 与使用多容器运行时
  7. AJAX——与服务器交换数据并更新部分网页技术
  8. SAP Spartacus的site context配置参数SiteContextParamsService
  9. C# DatatTable某一列是否有重复判断
  10. 【API进阶之路】太秃然了,老板要我一周内检测并导入一万个小时的视频
  11. C语言断言assert详解
  12. MySQL复制之gtid_purged与gtid_executed
  13. 一阶系统开环传递函数表达式_自动控制总结:第五章、线性系统的校正方法
  14. egret 图文并排
  15. 项目开发日记:陀螺仪的零漂现象
  16. win10+GPU+MATLAB+MatConvNet配置
  17. server取出多个最小值 sql_sql-server
  18. 水煮旅途之“天山夜话”
  19. 使用IDEA远程debug调试(一篇懂所有)
  20. 【第108期】技术大牛都在看的10本书,找到了

热门文章

  1. 转] 两种自定义表单设计方案
  2. 使用redis解决并发操作问题
  3. 用Aliyun E-MapReduce集群的sqoop工具和数据库同步数据如何配置网络
  4. 阻止跳转的四种方式,你知道吗?
  5. 并查集 删除节点 求集合的个数set hdu 2473
  6. DOS 下编写带有日期的脚本例子
  7. EIGRP路由汇总与安全性配置
  8. [转]Ubuntu以管理员权限打开文件(夹)
  9. 关于sqlite断电或者存储空间不足造成的数据文件损坏问题-转
  10. [Java] 蓝桥杯PREV-8 历届试题 买不到的数目