常见的加密算法原理与实现:AES加密

一、基本介绍

AES加密是一种对称加密算法,其全称为 :Advanced Encryption Standard,是DES(Data Encryption Standard)加密算法的升级替代版,也是目前最为流行的对称加密算法之一,之所以说是对称加密算法,是因为AES的加密和解密都是使用同一个秘钥完成。
在这里插入图片描述

二、AES的三个核心要素

AES加密算法的实现,需要秘钥、填充与模式这三者的配合使用,三者的概念如下:

2.1、秘钥

秘钥是实现AES加密与解密的根本,AES支持三种长度的密钥: 128位, 192位, 256位,其中AES256安全性最高,而AES128性能最高,因为加密处理的复杂度不同,秘钥越长,加密处理轮数越多。

2.2、填充

之所以需要用到填充,是因为AES加密是分组加密,也就是并不是直接将明文全部统一加密,而是对明文进行分组,拆成一个个独立的明文块(每个明文块长度都是128bit),之后对每个明文块独立加密,形成不同的密文块,最后将这些明文块拼接起来形成最终的加密结果。

在这里插入图片描述

由于AES明文块拆分的长度固定为128bit,当一段长度不足128bit,或者超过128bit,但不是其倍数时,我们就没法把明文按128bit长度分成等长的明文块,这时候就需要对明文块进行填充,将其补齐为128bit。

AES填充方式有以下几种:

• NoPadding
• PKCS7Padding
• ZeroPadding
• AnsiX923
• Iso10126
• Iso97971

比较常见的是这四种:NoPadding、PKCS7Padding、ZeroPadding、Iso10126。

  • NoPadding是指不做任何填充,但是要求明文块的长度必须是128bit,也就是明文的总长度必须为128位的整数倍。
  • PKCS7Padding是当明文块的长度不足16个字节(128bit)时,按照缺少的字节数(假设为n),填充n个字节,并且每个字节的值都等于n。比如明文:{1,2,3,4,5,a,b,c,d,e,f},缺少5个字节,则补全为{1,2,3,4,5,a,b,c,d,e,f,5,5,5,5,5}。
  • ZeroPadding顾名思义,是用0来进行填充,虽然填充方式比较简单,但并不是很好用,因为如果明文块最后一位也是0时,解密时就容易出错。
  • Iso10126填充与PKCS7相似,同样是按缺少的字节(假设为n)数来填充,但其填充的最后一个字节为n,其余字节填充随机数。

2.3、模式

AES的工作模式体现在把明文块加密成密文块的过程中,AES加密算法提供了五种不同的工作模式:


    ECB: 电码本模式(Electronic Codebook Book)
    CBC: 密码分组链接模式(Cipher Block Chaining)
    CTR: 计算器模式(Counter)
    CFB: 密码反馈模式(Cipher FeedBack)
    OFB
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值