对称加密
通信双⽅使⽤同⼀个密钥,使⽤加密算法配合上密钥来加密,解密时使⽤加密过程的完全逆过程配合密钥来进⾏解密。因为加密解密使用同一个密钥所以叫对称加密,对称加密的密钥只有一个。
对称加密作用
加密通信,防⽌信息在不安全⽹络上被截获后,信息被⼈读取或篡改。
对称加密缺点
密钥泄露:不能在不安全⽹络上传输密钥,⼀旦密钥泄露则加密通信失败
对称加密算法
DES 3DES=TDES
SM4(国密)
AES
TDEA、Blowfifish、RC2、RC4、RC5、IDEA、SKIPJACK
对称算法的文本加解密模式
ECB
①分组加解密,每组为8字节;
②相同明文块得到的结果块也相同;
CBC
①分组依次加解密,每组为8字节;
②相同明文块得到的结果块不相同;
DES
DES算法: 参数有三个:Key、Data、Mode。其中Key是8个字节的密钥;Data是8个字节要被加密或被解密的数据;Mode是指加密或解密模式。
3DES算法:当密钥Key长度为双倍长(16字节K1+K2)或三倍长(24字节K1+K2+K3)时,加解密8字节DATA均要执行三次DES运算。
其具体实现如下:Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文:
8字节密钥加密过程为:C=Ek1(M)
8字节密钥解密过程为:M=Dk1(C)
16字节密钥加密过程为:C=Ek1(Dk2(Ek1(M)))
16字节密钥解密过程为:M=Dk1(EK2(Dk1(C)))
24字节密钥加密过程为:C=Ek3(Dk2(Ek1(M)))
24字节密钥解密过程为:M=Dk1(EK2(Dk3(C)))
DES算法是怎么加密的?
DES是将明文按64位进行分组,密钥长64位,密钥是利用56+8奇偶校验位(第8,16,24,32,40,48,56,64)=64位的密钥对以64位为单位的块数据进行加解密。参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。
DES算法的加密密钥是根据用户输入的密码生成的,该算法把64位密码中的第8位、第16位、第24位、第32位、第40位、第48位、第56位、第64位作为奇偶校验位,在计算密钥时要忽略这8位.如果输入的密码只是在这8位上有区别的话,那么操作后的结果将是一样的.
非对称加密
加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。
非对称加密算法的特点:
1)、算法强度复杂
2)、加密解密速度没有对称密钥算法的速度快
通信双方把加密秘钥给对方,然后双方怎么通信呢?A通过B的加密秘钥加密数据后发给B,B就可以用B的机密秘钥进行解密,这样就实现的通信了。
像C也是可以获取到A、B的加密秘钥的,但是C没有A、B的解密秘钥,所以即使C获取的到秘文,也无法进行解密。但是C在拥有A/B的加密秘钥,那C不就可以冒充A、B进行传数据了吗,那要怎么保证传数据的那一方是实际数据来源方呢?
多时候公钥是可以通过私钥计算出来的,用的是椭圆曲线算法,比特币用的同一种算法,所以如果拿到了私钥就等于同时拿到了公钥,可见私钥不能公开的必要性。
由于私钥和公钥互相可解,因此非对称加密还可以应⽤于数字签名技术。即用来证明发信息者的身份
非对称加密之数字签名
数字签名通常使用私钥生成签名,使用公钥验证签名。
签名及验证过程:
发送方用一个哈希函数(例如MD5)从报文文本中生成报文摘要,然后用自己的私钥对这个摘要进行加密
将加密后的摘要作为报文的数字签名和原始报文一起发送给接收方
接收方用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,
接收方再用发送方的公用密钥来对报文附加的数字签名进行解密
如果这两个摘要相同、接收方就能确认该数字签名是发送方的。
数字签名验证的两个作用:
1)、确定消息确实是由发送方签名并发出来的
2)、确定消息的完整性
公钥和私钥到底谁来加密?
第一种用法:公钥加密,私钥解密。----用于加解密
第二种用法:私钥签名,公钥验签。----用于签名
可以理解如下:
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可以得出公钥加密,私钥解密。
既然是签名,那肯定不希望别人冒充我发消息,只有我才能发布这个签名,所以可以得出私钥签名,公钥验签。用于让所有公钥所有者验证私钥所有者的身份,防止私钥所有者发布的内容被篡改。但是不用来保证内容不被他人获得。
非对称密钥的加解密算法
ECC(椭圆曲线加密算法)
RSA(可⽤于加密和签名)、
DSA(仅⽤于签名,但速度更快)
非对称加密签名