当前位置:文档之家› 加密解密基础知识

加密解密基础知识

加密解密基础知识
一、加密的基础知识
1、对称性加密算法:AES,DES,3DES。

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

相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密算法的标准。

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

3、几种线性散列算法(签名算法)MD5,SHA1,HMAC
这几种算法,只生成一窜不可逆转的密文,经常用其校验数据传输过程中是否经过修改,因为相同的生成算法对于同一明文只会生成唯一的密文,若相同算法生成的密文不同,则证明传输的数据进行过了修改。

通常在数据传输过程前,使用MD5和SHA1算法均需要发送和接收数据双方在数据传送之前就知道秘钥生成算法,而HMAC与之不同的是需要生成一个秘钥,发送方用此密钥对数据进行摘要处理(生成密文),接收方再利用此密钥对接收到的数据进行摘要处理,再判断生成的密文是否相同。

4、对于各种加密算法的选用
由于对称加密算法的秘钥管理是一个复杂的过程,迷药的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

在实际操作中,我们通常采用的是:采用非对称加密算法管理对称机密算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理秘钥的优点。

如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,秘钥越长,运行的速度就越慢,应该根据我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128位即可。

注意,哈希函数,比如MD5,SHA,这些都不是加密算法。

要注意他们的区别和用途,很多网友都把md5说成是加密算法,这是错误的。

哈希函数:MD5,SHA是没有密钥的,相当于指纹的概念,因此也是不可逆的;MD5是128位的,SHA有不同而算法,有128位,256位等,如SHA-256,SHA-384;然后base64更加不属于加密算法的范围,它只是将byte数组进行了转换,因为很多加密后的密文或者一些特殊的字符需要显示出来,或者需要进行传递(电子邮件),但是直接转换就会导致很多不可现实的字符,会丢失一些信息,因此就转换为base64编码,这些都是可显示的字符。

所以转换后,长度会增加。

它是可逆的。

再就是3DES,DES,这才是加密算法,因此也是可逆的,加解密都需要秘钥,也就是你说的key最后是RSA,这是公钥密码,也就是加密和解密秘钥不同,也是可逆的。

相关主题