公钥与私钥,http详解

1.公钥与私钥原理
1)bob有两把钥匙,一把公钥,另一把私钥

2)bob把公钥送给他的朋友们-帕蒂,道格,苏珊每人一把 。

3)苏珊要给bob写一封保密的信。她写完后用bob的公钥加密,就可以达到保密的效果。

4)bob收信后,用私钥解密,就看到信件内容,这里要强调的是,只要bob的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

5)bob给苏珊回信,决定采用“数字签名”。他写完后先用hash函数,生成信件的摘要(digest)。

6)然后,bob使用私钥,对这个摘要加密,生成“数字签名”(signature)。

7)bob将这个签名,附在信件下面,一起发给苏珊。

8)苏珊收信后,取下数字签名,用bob的公钥解密,得到信件的摘要,由此证明,这封信确实是bob发出的

9)苏珊再对信件本身使用hash函数,将得到的结果,与上一步得到的摘要进行对比,如果两者一致,就证明这封信未被修改过

10)复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成”数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。

11)后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找”证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)。

12)bob拿到数字证书后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到bob真实的公钥了,然后就能证明“数字签名”是否真的是bob签的。

2.https详解
http协议的网站容易被篡改和劫持,如一些不良运营商会通过代理服务器在你的页面中植入广告等。因此很多网站选择使用https协议。https协议通过TLS层和证书机制提供了内容加密,身份认证,数据完整性三大功能。
1)下面,我们看一个应用”数字证书”的实例:https协议。这个协议主要用于网页加密。

2)首先,客户端向服务器发出加密请求。

3) 服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

4)客户端(浏览器)的”证书管理器”,有”受信任的根证书颁发机构”列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

5)如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

6)如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告

原文地址:http://www.youdzone.com/signature.html

Mysql Innodb和Myisam引擎区别

1.事务和外键
Innodb具有事务,支持4个事务隔离级别,回滚,事务,如果应用中需要执行大量的insert和update操作,则应该使用innodb。这样可以提高多用户并发操作的性能。
MyISAM管理非事务的表,提供高速存储和检索,以及全文检索能力。如果应用中需要执行大量的select查询,那么myisam是好的选择。

2.锁
mysql 支持三种锁级别:行锁,页锁和表锁
MyISAM支持表锁定
Innodb支持行锁,Innodb表的行锁也不是绝对的。如果执行一个sql语句时,mysql不能确定要扫描的范围,innodb表同样会锁住全表。

3.存储
MyISAM在磁盘上存储成三个文件,.frm文件存储表的定义,.MYD数据文件 , 索引文件扩展名 .MYI
Innodb,基于磁盘的资源是Innodb表空间数据文件和它的日志文件,Innodb表的大小只受限于操作系统文件大小。
MyISAM转移数据比较方便。

4.索引
Innodb 索引组织表,使用聚簇索引,索引就是数据,因此能缓存索引,也能缓存数据
MyISAM 堆组织表,使用非聚簇索引,索引和文件分开,随机存储,只能缓存索引。

5.并发
MyISAM读写互相阻塞,不仅会在写入的时候阻塞读,也会在读取的时候阻塞写。
Innodb读写阻塞与事务隔离级别相关。(默认是:可重复读)
适合场景:MyISAM适合select比较多的场景。Innodb适合insert和update情况比较多的场景。MyISAM并发相对较低,不支持事务, Innodb并发相对要好一点,支持事务

为什么MyISAM会比Innodb 的查询速度快
InnoDB 在做SELECT的时候,要维护的东西比MYISAM引擎多很多;
1)InnoDB 要缓存数据和索引,MyISAM只缓存索引块,这中间还有换进换出的减少
2)Innodb寻址要映射到块,再到行,MyISAM记录的直接是文件的OFFSET,定位比INNODB要快
3)InnoDB 还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护MVCC ( Multi-Version Concurrency Control )多版本并发控制

MyISAM 索引是b+ tree, 数据和索引分开
Innodb也是用的是b+tree , 表数据文件本身就是按b+ tree组织的。