序
上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的保护。同时,由于水平的限制,打算这个系列就到此为止了,这篇文章就算是一个总结吧,回顾一下这几个月来都写了些什么。
背景
其实,在开始写这个系列之前,我对于 Java 的加解密也并不是那么了解。之所以要写这些文章,还主要是由于工作的原因。记得几个月以前,当时项目要做一个数字证书,证书的生成、存储、传输等过程都是需要加密的,那时,我对于加解密这块还不是那么了解,就索性恶补了一段时间,简单的研究了一下。后来,工作上的任务都完成之后,就考虑反正加解密这一块在工作中使用挺频繁的,还不如分享出来,一块学习呢。
分类
- 单向加密算法
- 对称加密算法
- 非对称加密算法
- 数字签名算法(未涉及)
常用算法
原理
写了这么多的加解密算法,其实,本质上他们的原理是一样的。刚开始写前几篇的时候,还没有发现,可越到后边,这种感觉也就特别明显,仔细一想还真是,看来我的反应有点迟钝啊。
所谓的加密,说通俗一点,就是把原来的数据,改变输出的形式,让人眼不能一眼就分辨出来,从而保护数据的真实性。那么对于计算机来说,计算机只认识 0 和 1 。不管什么形式的数据,对于计算机来说都是一样的,都是很多的 0 和 1 的组合。0 和 1 虽然一样,但不同的组合(或者说排列)就会产生不同的结果,而加密的目的,就是让它产生不同的结果,以便其他的人或计算机不能正确的识别,这样才能保证数据不被泄漏或篡改。
不同的加密算法,其原理是共通的,只不过,对于加密的复杂程度是不同的。而且,很多加密算法都是基于另一种加密算法的基础之上实现的。说到底,就是用一定的方法,按照一定的规律,使用其他的字符(包括一些特殊字符)替换正常的字符,使之改变正常的表现形式。
关于代码
在分享每一个算法的时候,一般都会贴上 Java 的实现代码,这些代码中,有的是我自己写的,有的是参考了一些大牛的,自己实现了之后,才贴到博文中,主要是方便其他童鞋学习和理解。当然,这些代码中,我这里都有工程,如果有哪位小伙伴需要的话,可以私信我。
当然,代码写的并不怎么好,还有很多需要改善的地方,希望路过的大神多多批评指正。
结束语
这个加解密系列维持了这么长的时间,实非我愿,不过,话说回来,通过这段时间的研究,对于加密这一块,我学到了很多,同时,也解决了很多问题。之前觉得很枯燥的,看不懂的东东,现在已经很清楚明了了。希望这些东东能够对小伙伴们有一些帮助。
最后说一句,再见了,Encrypt And Decrypt!