加密与解密

阅读更多
我本身不是学密码出身的,但在工作中经常要使用加密与解密的东东,因为从事金融领域,没有办法,对安全性比较高,所以必需要接触到加密与解密的知识。在这一篇中,不具体讨论任何加密和解密的实现代码,只是从现实的角度去理解加密和解密。

数据的安全性体现在以下几点上:
1.数据加密;
2.数据的完整性;
3.数据的信任性。

对于加密而言,就是明文加密成密文,你拿去了也没有用。现在有两种加密方式:
1.对称加密。加密与解密用同一套密钥,如果这个密钥被人获取了,那你就完蛋了。
2.非对称加密。加密与解密使用非同一套密钥,这样对比对称加密而言,安全性就高多了。但是非对称加密的处理速度要低于对称加密的处理速度。

数据的完整性,就是获取的是完整的数据,而不是部分数据。常用的方式使用MD5来验证。

数据的信任性,就是获取的数据是来自我信任的一方,可以使用数字签名技术来实现。但是它使用的还是非对称加密的思想。

非对称加密可以维护多套密钥对,即公钥和私钥是一一对就的。
一般的加密过程是:公钥加密,私钥解密;
验签的过程:私钥加密,公钥解密。

数字证书的作用有两点:一点是是身份认证,另一个是提供公钥。

以上就是加密与解密的内容,当然只是一个非常概述的描述。

https流程:

1. 客户端发起访问;
2. 服务器维护一个私钥和一个CA证书(包含公钥);
3. 服务器向客户端返回包含服务器公钥的CA证书;
4. 浏览器校验证书,如果有效走步骤5,此时已获取服务器公钥;
5. 使用服务器公钥加密一个随机数(该随机数以后会用来作为对称加密的密钥);
6. 使用服务器私钥解密获得浏览器传过来的随机数,然后对返回的内容使用该 随机数进行对称加密;
7. 响应http请求,返回加密后的内容;
8. 解密服务器返回的内容并渲染到页面上。

整个https流程实际上是: 使用非对称加密算法保证对称加密密钥的安全传递,然后使用对称加密来保证数据传输过程中的安全性

你可能感兴趣的:(java,加密与解密,加密,解密,数字签名,数字证书)