Qt | 加密算法总结

举报
黑兔子 发表于 2022/10/17 16:30:05 2022/10/17
【摘要】 前言有时候我们不想让程序运行时依赖的文件被用户看见,比如一些配置文件等。这时我们就会使用文件加密方法,将文件内容进行加密,当用户打开文件的时候,看到的就是一堆乱码(密文)。这里对加解密进行一下总结,后面会对代码实现给出方法。 加密算法分类 加密分为单向加密和双向加密:单向加密又称为不可逆加密,即生成密文无法反解密的一种加密方式;例如:MD5、SHA系列和HMAC。双向加密又称为可逆加密,即...

前言

有时候我们不想让程序运行时依赖的文件被用户看见,比如一些配置文件等。这时我们就会使用文件加密方法,将文件内容进行加密,当用户打开文件的时候,看到的就是一堆乱码(密文)。这里对加解密进行一下总结,后面会对代码实现给出方法。

加密算法分类

加密分为单向加密和双向加密:

  • 单向加密又称为不可逆加密,即生成密文无法反解密的一种加密方式;例如:MD5、SHA系列和HMAC。
  • 双向加密又称为可逆加密,即生成密文后,在需要的时候可以反解为明文;例如:RSA、AES和DES系列。

单向加密常用的算法: MD5摘要算法。数字摘要算法也被称为哈希算法、散列算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个散列值(通常用16进制表示为32个字符)。

双向加密又包括非对称加密和对称加密:

  • 对称性加密算法也称单密钥加密。对称式加密就是加密和解密使用的是同一个密钥。 信息接收双方都需要事先知道密匙和加解密算法且这个密匙是相同的,然后就可以对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。
  • 非对称算法非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",两个必需配对使用。

对称加密的优缺点:

  • 优点:对称加密算法使用同一个密匙加密和解密,速度快,适合给大量数据加密。
  • 缺点:对称加密客户端和服务端使用同一个密匙,存在被抓包破解的风险;需要大量钥匙,秘钥管理负担。

对称加密常用的算法:

  • DES。密钥长度可为128、192、256位 也就是16字节、24字节、32字节,DES是一种分组加密技术;
  • AES。密钥长度64位 ,也就是8字节,相比较有更高速度和资源使用效率,高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

非对称加密的优缺点:

  • 优点:非对称加密算法使用公钥加密,私钥解密,私钥签名,公钥验签。安全性高,私钥留一方保管,不要外泄,公钥交给请求方。
  • 缺点:速度较慢。

非对称加密常用的算法:

  • RSA。由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。
  • Elgamal 。
  • 背包算法 。
  • Rabin 。
  • DSA:数字签名算法,是一种标准的 DSS(数字签名标准) 。
  • Ecc:椭圆曲线密码编码学。

ECC和RSA相比,相同的密钥长度,其抗攻击性要强很多倍。计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。存储空间占用小。

注: 大量数据加密建议采用对称加密算法,提高加解密速度;小量的机密数据,可以采用非对称加密算法。

密钥如何选择:
一般密钥越长运行速度越慢。所以根据实际需要的安全级别选择合适的秘钥:一般RSA建议1024位的数字,ECC用160位,AES用128即可。

AES加密模式分类

1. ECB模式(Electronic Code Book Mode): ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。

  • 优点:有利于并行计算;误差不会累计(互不干扰)。
  • 缺点:可能对明文进行主动攻击。

2. CBC模式(Cipher Block Chaining Mode): CBC模式对于每个待加密的密码块,在加密前会先与前一个密码块的密文异或然后再用加密器加密(图中的圆圈十字符号表示异或操作,下同)。第一个明文块与一个叫初始化向量的数据块异或。加、解密双方共同知晓密钥和初始化向量才能实现加解密。

  • 优点:安全性比ECB模式高;是SSL的标准。
  • 缺点:数据块之间的加密有依赖关系,因此不能并行计算。

3. CFB模式(Cipher Feedback Mode): CFB 模式是用分组算法实现流算法,明文数据不需要按分组大小对齐。

  • 优点:明文数据不需要按分组大小对齐,即无需填充。
  • 缺点:同CBC模式,无法并行计算。

4. OFB模式(Output Feedback Mode): OFB 模式的过程和CBC模式有点像,但明文数据不需要按分组大小对齐。

  • 优点:明文数据不需要按分组大小对齐,即无需填充。
  • 缺点:同CBC模式,无法并行计算。

5. CTR模式(Counter Mode): CTR模式是在ECB模式的基础上,引入了Nonce随机数和Counter计数器,Nounce随机数和Counter计数器整体可看作计数器,每加密一段明文,计数器向上加一,并且这个计数器都会和初始IV进行连接、加加、异或等运算,然后使用加密器进行加密,最后在和明文异或得到分段密文。

  • 优点:明文数据不需要按分组大小对齐,即无需填充。
  • 缺点:加密方和解密方需要同时维护初始IV、Nonce、Counter。

6. PCBC模式(Propagating Cipher Block Chaining Mode): PCBC模式是CBC模式的改进版,与CBC模式的不同的是:CBC模式后段明文加密的所需向量是前一段的密文,而PCBC模式后段明文加密所需的向量是前一段明文和密文的异或值。

  • 优点:同CBC模式。
  • 缺点:同CBC模式。

另:我们常说的Base64加密,不是安全领域下的加解密算法,只是一个编码算法。
通常用于把二进制数据编码为可写的字符形式的数据,特别适合在http,mime协议下的网络快速传输数据。
UTF-8和GBK中文的Base64编码结果是不同的。
采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到,但这种方式很初级,很简单。
Base64可以对图片文件进行编码传输。这是一种可逆的编码方式。编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/,共64个字符(26 + 26 + 10 + 1 + 1 = 64)。其实是65个字符,“=”是填充字符。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。