加密算法相关

加密算法:

加密算法一般分为对称加密和和非对称加密,对称加密是指加密与解密使用的是同一密钥,而非对称加密加密解密使用不同的密钥,一般把两个密钥分别称为公钥和私钥。

对称加密算法又分为序列密码算法分组密码算法,从名字可以看出,序列密码算法在加密的时候每次只加密一个字节,而分组加密是把要加密的内容分为一块一块,例如16个字节,每次对这样一块数据进行加密。

典型的序列密码算法是RC4(由Ron Rivest发明,就是那个RSA的R),RC4是RSA公司的一种专有密码算法,在1994年的时候有人匿名发出了一份RC4的加密算法的代码,并被证明与RSA公司的RC4是兼容的。RC4是一种密钥长度可变的算法,其密钥长度可以在8~2048位之间。不管密钥有多长,都被扩展为一张固定尺寸的内部状态表,因此不论使用多长的密钥,该算法的运算速度都是一样快。

序列密码算法得到的密文是与明文一一对应的,因此为了防止被修改一般配合一种摘要算法来使用。

分组密码算法每次只能地固定的长度数据进行加密,例如16个字节,如果想要加密更大的数据,得使用ECB(Electronic Codebook)或者CBC(Cipher Block Chaining)模式。ECB只是简单的把消息分割成固定的16个字节,并使用加密算法对各块进行加密,这种方式有着明显的不足,例如两段很相似的明文,另密后也会产生很类似的密码,这会暴露给攻击者很多信息。CBC解决了这个问题,对每个明文分组的加密依赖于前一密文分组的密文。这是通过在加密前会使用前一个密文分组与明文进行异或来实现。这个时候第一个文明分组会与一个叫做IV(初始化向量)的随机分组进行异或。

DES是应用最为广泛的对称式加密算法,它是一种具有56位密钥的64位分组,意思就是以8字节大小的分组进行加密,密钥空间为56位,DES密钥的实际是64位长,但是每个字节的低位用来做奇偶校验。由于计算机速度的提高,DES已经被认为是不安全的了,毕竟密钥太短。在这种情况下3DES算法就出现了,3DES算法一般使用加密-解密-加密(EDE)的模式。

RC2同样是R发明的分组密码,它采用一种经过变形的变长密码,它还具有一种可变的有效密钥长度。

AES至少有128位的分组大小,可以用128、192、256位的密钥长度。

非对称加密:

最出名的算法应该是RSA了,RSA的理论基础很简单,而算法的安全性基于一个数学难题:“对一个大素数进行因数分解”。

Diffie-Hellman(DH)是首个公开发表的公钥加密算法(RSA一开始是有专利的),一般用于密钥磋商,而RSA用于密钥交换。

摘要算法:

摘要算法比较简单,从设计的角度来看,所有的摘要算法都非常的相似,唯一的区别就是输出尺寸的不同。两种最流行的算法为MD5、SHA-1。由于MD5的输出长度只有128位,而且存在了相关的破解方法,所以一般在PKI中推荐使用SHA-1。

Comments

dream: 不错,我以前也学习过安全方面的知识,继续发表相关的文章吧,我关注啊 :) 不过一直对PKI这一系统不太理解,另外 “摘要算法:“的 下文怎么没有了?

可可熊: 公司在做安全相关的东西么。

alex: http://songshuhui.net/archives/12755.html

草儿: 当年学习的网络安全都快被我扔完了,没想到你还在研究。

hawkli: MD5虽然说已经有了王小云算法论文,但是在商业化环境中,现在还是安全的。我不认为现在已经达到了商业化可破解的程度,业界还是有大量的应用存在。我相信至少MD5还有5年以上的商业生命周期,之后才会逐渐由其他加密算法渐渐替代。

坚持原创技术分享,您的支持将鼓励我继续创作!