AES-128-CFB,AES-128-GCM,ChaCha20-Poly1305加密算法对比

AES加密方式

大家不难发现AES-128-CFB、AES-128-GCM均是AES-128-开头,很明显他们有着相似的特性。
AES(Advanced Encryption Standard)高级加密标准,这类加密标准是十分常见的对称加密算法。所谓的对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:




具体的加密细节由于篇幅加之文章目的不再展示了。这里的AES-128就是密钥的长度为128位,加密轮数为10轮。此种方式在日常生活中应用极广,你现在看到了这篇文章,你就有可能在应用这类加密,因为网站的HTTPS也是基于这种加密方式的。

AES-128-CFB

在知道了AES大概是什么后,相信大家就能猜到了AES-128-CFB、AES-128-GCM都是在AES加密方式下的不同的加密模式。那么两者又有怎样的差别呢?
对于CFB模式来说,其全称为Cipher FeedBack模式(密文反馈模式)。在CFB模式中,前一个密文分组会被送回到密码算法的输入端。而所谓反馈,这里指的就是返回输入端的意思。以下是其示意图:




从上图中可以发现,对于AES-128-CFB而言其优点在于它隐藏了明文模式,同时它可以及时加密传送小于分组的数据。但它也有缺点,CFB并不利于并行计算、一个明文单元损坏影响多个单元。

AES-128-GCM

对于GCM 模式来说,其全称为Galois/Counter Mode,也就是该对称加密采用Counter模式,并带有GMAC消息认证码。
其工作原理是相对较为复杂的,与CFB不同,它可以提供对消息的加密和完整性校验,另外,它还可以提供附加消息的完整性校验。以下是其粗略的示意图:




同样的笔者也不展开讨论了。这里依然说一下GCM的优缺点。对于GCM而言其最大的优势便是有利于并行计算,并且有消息的完整性校验。缺点自然是要考虑运行加密时硬件的支持程度。

ChaCha20-Poly1305

对于ChaCha20-Poly1305,其全称就是ChaCha20-Poly1305,它是由ChaCha20流密码和Poly1305消息认证码(MAC)结合的一种加密算法。
ChaCha20-Poly1305是基于RC4流加密的一种加密方式,它与AES有本质的区别,对于RC4而言,已经被证实并不安全,那么为什么还要发展ChaCha20-Poly1305呢?原因很简单,兼容性。
对于精简指令集的ARM平台,由于没有AES-NI指令集,ChaCha20-Poly1305在同等配置的手机中表现是AES的4倍(ARM v8之后加入了AES指令,所以在ARM v8平台上的设备,AES方式反而比chacha20-Poly1305方式更快,性能更好),这样可减少加密解密所产生的数据量,使得性能更好。

来源:https://www.idleleo.com/09/3058.html

评论

此博客中的热门博文

打造一个可国内访问的Blogger(Blogspot)方法

教你如何搭建自己的go-gin框架

设计师别担心,微软雅黑这样使用不侵权

孩子即将上小学一年级,家长需要做什么准备?

一些免费的云资源

Java 认证考试 OCAJP 经验总结

为什么要建模;怎么建模才合理;“领域”模型具体指什么?(DDD)

分析redis key大小的几种方法

Matomo API 官方接口详情

Base:一种Acid的替代方案