关于加密的一些个人总结

加密一直是软件技术中比较重要的内容。个人从事iOS开发四年中的对加密的一些个人总结。仅仅是总结。

加密可以分为对称加密和非对称加密。其中对称加密比如AES,DES,3DES等。非对称加密比如说DSA,ECC。除了这两大加密类型还有一种我们iOS开发常用的加密方式,md5,base64为代表的散列算法,这些只是属于不可逆的散列算法,严格说不算加密。然而m5若是加盐的话,其效果也能起到较好的加密效果。

下面我就来简单的阐述下对称和非对称这两种吧:

对称加密:信息接受的双方都需要事先知道加密秘钥,且秘钥相同。之后就可以根据秘钥对对方发送过来的数据进行解密。

非对称加密:发送方需要事先生成公钥和私钥。公钥发给对方,私钥留给自己。如果甲方想要发送消息给乙方,那么甲方需要需要事先知道乙方的公钥,甲方利用乙方的公钥对数据进行加密,之后再发送消息给乙方。乙方在收到了甲方的消息以后,使用自己的私钥对甲方的消息进行解密。反之亦是同理。

总而言之,就是用公钥加密的内容只能用私钥进行解密,用私钥加密的内容也只能用公钥解密。习惯性的称之为私钥签名,公钥验证。也可以叫做共用秘钥签名系统。

现在我们来简单的介绍下上面的哪几种加密算法:

DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。

相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。对于具体的算法我们不做深入的了解, 之前有一篇文章写得很好, 由于时间问题, 我就不给大家找了。

RSA和DSA的安全性及其它各方面性能都差不多,而ECC较之则有着很多的性能优越,包括处理速度,带宽要求,存储空间等等。

用于对称加密算法的秘钥管理比较复杂,秘钥的管理工作直接关系到数据的安全性。因此在数据较小的时候我们可以考虑使用非对称加密。

在实际的操作过程中我们常常采用的方式是采用非对称加密的方式管理对称加密的秘钥,用对称加密的方式对双方的通信进行加密。这样就可以兼容两种加密算法的优点,即保证的秘钥的安全管理,也可以保证数据传输的速度。那么一般来说秘钥越长,数据传输速度按会越慢。因此我们需要合理的选择秘钥的算法长度。建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

你可能感兴趣的:(关于加密的一些个人总结)