密码学原理
加密解密公式
-
明文用M(消息Message)或P(明文Plaintext)表示,密文用C(Ciphertext)表示。
-
加密函数E作用于M得到密文C,用数学式子表示为:\(E(M)=C\)
相反地,解密函数D作用于C产生M,表示为:\(D(C)=M\) -
先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:
注意:加密和解密离不开密钥的参与
安全密码准则
-
所有算法的安全性都基于密钥的安全性,而不是基于算法细节的安全性。
-
密钥空间,算法步数
-
只有公开的算法才是安全的。
因为公开的算法集结了各种思想,如果公开了还未破解,则能说明算法安全。 -
时间和实践检验
对称密钥密码和非对称密钥密码
基于密钥的算法通常有两类:对称密钥算法(秘密密钥算法)和非对称算法(公开秘密密钥算法)。
对称算法有时又叫传统密码算法
就是加密密钥能够从解密密钥中容易地推算出来,反过来也成立。在大多数对称算法中,加/解密密钥是相同的。
对称算法可分为两类。
- 一次只对明文中的单个比特(有时对字节)运算的算法称为序列密码或流密码算法。
- 另一类算法是对明文的一组比特进行运算,这些比特组称为分组,相应的算法称为分组算法。
非对称算法也叫做公开密钥算法
是因为加密密钥能够公开,即他人能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。
非对称算法是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的有限时间内)。