加解密小结
加密算法通常分为对称加密算法和非对称加密算法,下面就来梳理一下相关概念。
对称加密算法:信息接收双方都需要事先知道密匙和加解密算法,并且密匙是相同的,接下来就可以对数据进行加解密了。
非对称加密算法:发收双方A,B事先均生成一堆密匙,然后A将自己的共有密匙发送给B,B将自己的共有密匙发送给A,如果A要给B发送消息,需要先用B的公有密匙进行消息加密然后发给B,B收到消息之后再用自己的密匙进行消息解密,B向A发消息也是同样的流程。
总而言之,公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。公钥加密私钥解密也可以称为"公共密钥加密系统",私钥加密公钥解密更准确应该叫做私钥签名公钥验证,也可以称为"公共密钥签名系统"。
可以用下图简单说明一下"公共密钥签名系统"的流程:
如图所示:A要传信息给B,但B不能确定信息是不是A发来的,那么就使用"公共密钥签名系统"进行信息的加解密:
(1)A先以MD5方式计算出信息的Hash值,得到:[MD5 (信息)];
(2) A用自己的私钥加密Hash值得到:[私钥(MD5 (信息))];
(3)然后A将信息与密文:[(信息)+私钥(MD5(信息))]一起传给B;
(4)接收到信息后,先用相同的Hash算法算出的Hash值得到:[MD5 (信息)];
(5)再用A的公钥来解密[
私钥(MD5(信息))],如果能解开则证明该[ 私钥(MD5(信息))]是A发送来的;
(6)最后比较[MD5 (信息)]是否相同,如果相同则表示信息传送过程中没有被篡改过,是安全的;
几种对称性加密算法:AES,DES,3DES
DES是一种分组数据加密技术(先将数据分成固定长度的小段数据块,之后再进行加密),其速速比较快,适合大体量数据的加密。
3DES是基于DES的加密算法,它的特点是使用了3个不同的密匙对同一个分组数据块进行3次加密,使得密文强度更高。
AES相对于DES和3DES而言有着更高的速度和资源使用效率,安全级别也更高,被视为下一代加密标准。它也是将明文分块进行加密,加密模式很多,网上有很多详细的介绍,这里我就不一一搬出来给大家说了。
几种非对称加密算法:RSA,DSA,ECC
RSA和DSA在安全性和其他各方面的性能都差不多,相比之下ECC在处理速度,带宽要求和存储空间方面都有不错的性能优势。
这里需要注意下:
MD5,SHA,哈希函数这些都不属于加密算法,很多网友经常将MD5视为加密算法是不正确的,MD5,SHA他们是没有密钥的不可逆的,相当于指纹的概念,MD5是128位的,SHA有128,256位如SHA-256,SHA-384,另外Base64编码更不属于加密算法范畴,它只是将byte数组进行了转换以便能够输出可显示字符。相关的实现代码网上有很多,这里就不再重复贴出来了。