1.md5不可逆的加密方式,加密成一个32位的字符串。算法是公开的,任何语言的加密结果都是一样的。总有可能是重复的。
用途:
(1)防止明文存储:可以用作密码加密
(2)防止篡改:判断文件变化,将程序生成一个字节流,然后md5加密一下,判断加密结果是否有变化,可以防止程序挂载木马或者做类似SVN的东西。
(3)防止抵赖,数字签名。用于第三方认证机构。
解密:对撞库、穷举法。
防破解手段:1加盐。用户输入的基础上加上一些字符串然后做md5加密,防止被撞库。2.双md5加密,加密两遍,防止重复。
扩展-云盘秒传的实现方式:1.用户上传文件后,客户端通过对Stream流或者文件的摘要做一个md5加密 2.判断数据库中是否有相同值的文件,如果有,直接将路径复制一份过来。3.如果没有则不支持秒传。
2.Des对称可逆加密
对称:加密解密是同一个key。des是代表性算法,密钥长度为8
优点速度快,但是秘钥的管理不方便,要求共享秘钥。
3.RSA非对称可逆加密
非对称:加密解密不是同一个Key,但是key成对出现。加密key与解密key是不能互相转化的。
有点:密钥管理方便,缺点速度慢。
命名:公钥私钥是相对的,其实叫加密key和解密key更贴切,因为有时候需要暴露加密key,有时候需要暴露解密key,被暴露的就是公钥,隐藏的就是私钥。
过去的加密解密处理方式:
加密:提供给方法一个需要加密的内容后,加密算法返回三个值:公钥、私钥、和加密值。
解密:通过私钥和加密内容获得解密结果值。
新的推荐方式
通过Rsa类获取KeyValuePair键值对,键为公钥,值为私钥。
加密:通过公钥加密获取加密值。
解密:通过私钥解密获取解密值。
用途:
1.可以判断请求来源的唯一性、合法性。因为加密解密key是一对的。加密key私有,解密key公开,只有拥有加密key的人才能发送消息。
2.可以判断请求目的的唯一性、合法性。解密key私有,加密key公开,只有拥有解密key的人才能解密看到。
4.单边认证https通讯三次握手
1.client向server发起请求,server返回一个签名和公钥(加密钥)。
2.client通过公钥加密一个字符串"abcd"发送到服务器,服务器通过私钥(解密key)解密得到"abcd"字符串并返回client表示自己是合法服务器。
3.client与server开始通过"abcd"作为对称加密的秘钥开始通讯。
5.网站证书认证
1.公司像CA机构提交名称网址。
2.CA机构生成一个签名(MD5加密值),对应一个有效的证书。
3.公司下载一个证书文件,文件中包含
1.公司详细信息,MD5信息避免修改
2.CA机构信息
3.不对称可逆加密的加密解密Key,然后就可以支持https通讯了。
6.银行卡双边认证(两对加密解密秘钥)
1.client向server发起请求,server返回一个签名和公钥(加密钥)。
2.client通过公钥加密一个字符串"abcd"发送到服务器,服务器通过私钥(解密key)解密得到"abcd"字符串并返回client表示自己是合法服务器。
3.client确认了服务器的身份并发送证书给server,完成了第一次验证,证书验证。
4.server完成证书验证后初步认可client的身份并拿公钥加密"1234"并将值发送给client。
5.client通过私钥解密后将解密值“1234”发送给服务器,服务器校验1234无误,完成第二次验证,秘钥验证。
6.服务器发送对称加密字符串给client,双方开始通讯。
总结:md5保证文件不被篡改,保证有效,RSA做服务器身份验证,用Des做数据传输。