在命名空间System.Security.Cryprography里
1、MD5 不可逆加密
作用:
- 用作数据库密码,防止看到明文(原密码+固定字符串,然后在MD5/双MD5)
- 防篡改
- 急速妙传(案例,百度云 ,第一次上传文件,保存md5摘要,第二次上传先计算md5值,在做比对,如果有就不用在上传了。)
- 文件下载(防篡改,官方发布的时候给一个md5摘要,安装的时候首先检查下摘要)
- svn、TFS、git、VSS(本地保存文件的md5摘要,任何修改都会影响md5)
- 防抵赖(A发了一篇文章到网站上,网站将该文章的md5给了A。那么凡是相同md5的文章都是A发表的。)
注意:
md5加密时要区别字节的保存编码的类型(UTF8等)
2、Des 对称可逆加密
- 除了DES是对称可逆加密还有AES、Blowfish
- 解释:可逆代表即可以加密又可以解密,对称是说加密和解密用的是同一个密钥。
- 加密速度快
- 密钥的安全是问题。
用处:
- 用作数据传输
3、 RSA 非对称可逆加密
- 非对称代表,有一个加密钥和一个解密钥。
- 概念:公钥是公开的密钥,密钥与之相反
加密钥和解密钥都可以用来做公钥,产生的效果也不同。
4、 数字证书 SSL
证书颁发机构英文简称为CA,负责签发、作废和保存证书,CA签发的证书称为CA证书,CA证书的本质是利用SSL/TLS协议保护传输数据的安全,因此又称为SSL证书。
5、 CA机构的证书
在访问http的网站时,会提示此网站不安全,其实就是该网站没有申请CA证书(有CA证书的http就变成了https了)。
原理:
百度公司要申请CA证书:
- 百度将 组织信息、网站信息 发送给CA机构
- CA机构用md5加密证书的明文信息(md5加密是为了防篡改),再用私钥加密MD5加密后的值,等到的就是该证书的数字签名(Certificate Signature)
- CA证书包含以下信息: a - e为明文信息
a. 持有者姓名(Common Name)
b. 发证机关(Issuer)
c. 有效日期(Validity)
d. 证书持有人的公钥(Subject ‘ s Public Key)
e. 扩展信息(Extension)
f. 证书的数字签名(Certificate Signature) - 百度公司将得到的证书安装到服务器。
- 客户端会内置CA权威机构的证书,客户端在请求服务器时,服务器会第一时间返回证书信息,客服端用公钥(这个公钥不是证书里的公钥,而是内置的CA证书里的公钥)去解密数字签名得到Md5加密值。在比对服务器发来的证书的md5值。相同则通过验证。
- 需要注意的是,你的证书不能被别人知道。
https单边认证
单边认证,证明了服务器是服务器。
- Client的第一次请求会等到一个证书,验证证书得到公钥(加密密钥)。
- Client用公钥加密一个1234(随机值)发给Server,Server解密回复1234(证明我是证书对应的Server)。
- Client、Server决定用12345(随机值)作为对称密钥加密传输(对称密钥速度快)
- 开始信息传输,全部用12345加密
双边认证
双边认证,即证明了服务器是服务器,又证明了客户端是客户端
- Client的第一次请求会等到一个证书,验证证书得到公钥(加密密钥)。
- Client用公钥加密一个1234(随机值)发给Server,Server解密回复1234(证明我是证书对应的Server)。
- Client会将自己的证书发给Server,验证证书得到公钥(加密密钥)。Client证书来自USB Key、身份证等等
- Server用公钥加密一个1234(随机值)发给Client,Client解密回复1234(证明我是证书对应的Client)。
- Client、Server在决定用 “任意值” 作为key ,进行加密。
- 数据传输。