vlambda博客
学习文章列表

安全算法-对称加密与非对称加密


1. 什么是对称加密

对称加密它的特点是文件加密和解密使用相同的密钥加密。密钥既可以用作加密也可以用作解密。对称加密算法使用起来简单快捷,密钥较短,且破译困难。
常见的对称加密:DES、AES、国密SM4

2. 非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密,因为加密和解密使用的是两个不同的密钥。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
常见的非对称加密:RSA、 ECC、 国密SM2

3. 区别

序号 对称加密 非对称加密
1 对称加密中加密和解密使用的秘钥是同一个 非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密
2 对称加密解密的速度比较快 对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢
3 对称加密的安全性相对较低 非对称加密的安全性较高

下面介紹我用過的两种加密算法

4. AES

AES 使用密钥长度支持为 128/192/256 位的对称数据包密码系统。当用户密钥不够长时,将使用0x00填充该工具。IV也是如此。不合时宜的内容将被忽略。加密后,明文数据以 16 个字节分组,小于 16 个字节的数据将填充特定的填充(如 PCKS7)字符,因此不同填充模式下文本的最后一段可能会有所不同。

常见的填充模式有:'PCKS5'、'PCKS7'、'ISO10126'、'ANSIX923'、'ZERO' ,类型包括DES-ECB、DES-CBC、DES-CTR、DES-OFB、DES-CFB [1]。

ECB: 最简单的方式, (原文,密钥) => 密文 

CBC: 先将原文与IV异或, 再加密, (原文⊕IV ,密钥) => 密文 

CFB: 过程比较复杂,  大概就是, 上个数据块的输出, 会作为下个数据块的输入. 

CTR: 复杂

5.SM4

SMS4算法是一种32轮的迭代非平衡Feistel结构的分组加密算法,其密钥长度和分组长度均为128。SMS4算法的加解密过程中使用的算法是完全相同的,唯一不同点在于该算法的解密密钥是由它的加密密钥进行逆序变换后得到的。

SMS4分组加密算法是中国无线标准中使用的分组加密算法,在2012年已经被国家商用密码管理局确定为国家密码行业标准,标准编号GM/T 0002-2012并且改名为SM4算法,与SM2椭圆曲线公钥密码算法,SM3密码杂凑算法共同作为国家密码的行业标准,在我国密码行业中有着极其重要的位置。

SMS4通过32轮非线性迭代后加上一个反序变换,这样只需要解密密钥是加密密钥的逆序,就能使得解密算法与加密算法保持一致。SMS4加解密算法的结构完全相同,只是在使用轮密钥时解密密钥是加密密钥的逆序。

SM4加密算法应用场景
SM4广泛使用在WAPI无线网络标准中使用,比如当我们前端向后台传参数的时候,可以使用此算法。对参数的数据进行加密,然后后台对加密的数据进行解密再存储到数据库中,保证数据传输过程中,不受泄露。


参考文献
[1] 


推荐阅读