aescfb加密_iOS AES加密(主要使用CFB模式)

前言

首先,希望大家耐心点,这个加密我也是弄很久才出来的,辛辛苦苦整理的博客,介绍大概概念就进入正题!

上面是基本介绍,后面是个人经历的问题及解决方案,希望你们耐心看,不要踩我进过的坑啦!祝你们都能顺利解决问题✌️

1. 介绍

1.1 AES是什么?

分组密码算法,旨在取代 DES 成为广泛使用的标准。

1.2 AES详解

AES 根据使用密码长度有三种方案以应对不同的场景要求,分别是 AES-128、AES-192 和 AES-256。加密模式有四种,分别是 ECB(Elecyronic Code Book,电子密码本)、CBC(Cipher Block Chaining,加密块链)、CFB(Cipher FeedBack Mode,加密反馈)、OFB(Output FeedBack,输出反馈)。

需要和后台统一四个东西:秘钥长度、加密模式、填充方式、初始向量(也称偏移量,ECB模式不需要)。

定义中说到 AES 是一个对称分组密码算法,加密原理如图:

AES 加密原理

1.3 实现原理和比较

这个就比较深入啦,有兴趣的自行查看~

实现原理

比较

1.4 模式和填充选择

算法/模式/填充

16字节加密后数据长度

不满16字节加密后长度

AES/CBC/NoPadding

16

不支持

AES/CBC/PKCS5Padding

32

16

AES/CBC/ISO10126Padding

32

16

AES/CFB/NoPadding

16

原始数据长度

AES/CFB/PKCS5Padding

32

16

AES/CFB/ISO10126Padding

32

16

AES/ECB/NoPadding

16

不支持

AES/ECB/PKCS5Padding

32

16

AES/ECB/ISO10126Padding

32

16

AES/OFB/NoPadding

16

原始数据长度

AES/OFB/PKCS5Padding

32

16

AES/OFB/ISO10126Padding

32

16

AES/PCBC/NoPadding

16

不支持

AES/PCBC/PKCS5Padding

32

16

AES/PCBC/ISO10126Padding

32

16

PKCS7Padding VS PKCS5Padding:

PKCS5Padding 的 blocksize 为8字节,而 PKCS7Padding 的 blocksize 可以为1到255字节。

需要注意点:

1. iOS只支持 PKCS7Padding 填充方式;Java 支持 PKCS5Padding 但不支持 PKCS7Padding,不过不要担心,上面说的区别我也不懂,实际中倒是一样;

2. node.js 在 AES 加密上和其他语言有略不同,它系统自带方法对 Key 进行过 MD5 处理。

2. 经验总结

2.1 加密模式和填充方式的确定

首先

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AES(Advanced Encryption Standard)是一种对称加密算法,CFB(Cipher Feedback)是一种加密模式,而128指的是AES使用的密钥长度为128位。 CFB128模式AES加密算法中常用的一种加密模式,它使用128位的反馈,每次处理一个128位的数据块,并且可以进行位级加解密。其加密过程如下: 1. 首先需要准备一个128位的初始化向量(IV)和一个密钥。 2. 将IV作为第一个输入块与密钥一起送入AES加密算法。这会生成一个128位的密文输出块。 3. 将明文的第一个128位数据块与第一步得到的密文输出块进行异或运算。得到的结果就是第一个加密后的128位密文块。 4. 将第一步得到的密文输出块作为输入,再次与密钥一起送入AES加密算法,得到第二个密文输出块。 5. 将明文的第二个128位数据块与第二步得到的第二个密文输出块进行异或运算,得到第二个加密后的128位密文块。 6. 依此类推,对明文的每一个128位数据块都进行相同的操作,直到整个明文被加密为密文。 解密过程与加密过程类似,只是在对密文进行异或运算时使用的是前一个密文块而非明文块。 AES CFB128加密是一种常用的加密方式,它能够提供较高的安全性,适用于保护敏感信息的传输和存储。同时,由于CFB模式的特性,其允许以较小的块进行加解密,因此在处理大型数据时能够提供较高的效率。 ### 回答2: AES CFB128是一种使用AES算法进行加密的分块加密模式,该模式将输入数据分成大小为128位的块,并在每个加密块中使用AES算法进行加密CFB(Cipher Feedback)模式是一种反馈模式,它允许加密器的输出反馈到加密器的输入,从而实现流密码的加密方式。 在AES CFB128中,初始的输入块会被加密器所加密,然后将输出的密文与下一个输入块进行异或运算,得到加密结果。这样,每一个输入块都会依次与前一个加密块进行异或运算,并输出对应的密文。因此,CFB模式使得每一个加密块的加密结果依赖于之前的密文块,从而增加了密文的随机性和完整性。 与其他AES分块加密模式相比,CFB128适用于带宽受限的环境,因为它可以以比较小的块进行加密,减少了数据传输的开销。同时,CFB128还能够提供数据流的完整性验证,即在解密过程中可以校验数据是否被篡改。 需要注意的是,AES CFB128仅提供了数据的机密性和完整性验证,而没有提供数据的不可抵赖性。对于需要保证数据的不可抵赖性的场景,可以采用其他的加密模式,例如CTR模式。 总而言之,AES CFB128是一种使用AES算法进行加密的分块加密模式,可以确保数据的机密性和完整性验证,适用于带宽受限的环境。 ### 回答3: AES CFB-128加密是一种常用的对称加密算法,其全称为高级加密标准(Advanced Encryption Standard)的密码反馈模式(Cipher Feedback)加密。下面将详细介绍。 AES算法是一种对称加密算法,使用相同的密钥进行加密和解密过程。AES的密钥长度可以为128位、192位或256位,其中AES-128最为常用。在CFB-128模式下,AES算法将明文分块为128比特(16字节)的块,然后通过一个长度为128比特的反馈(Feedback)输出密文。 具体过程如下:首先,需要确定一个初始化向量(Initialization Vector,IV),IV的长度也为128比特。然后,将IV作为输入,通过AES算法的密钥扩展算法生成初始块(Initial Block),再将初始块与明文的第一个块进行异或操作。得到的结果即为第一个密文块。 接下来,将第一个密文块作为输入,再次通过AES算法生成下一个初始块,然后与明文的第二个块进行异或操作,得到第二个密文块。依此类推,直到加密完整个明文。 在解密时,与加密过程相反,先确定一个IV,然后对密文进行解密操作。将解密得到的结果与前一个密文块进行异或操作,即可恢复出原始明文。 相对于CBC(Cipher Block Chaining)模式CFB模式具有更好的传输性能。因为在CFB模式下,加密操作不需要等待前一个密文块,可以并行进行,提高了效率。 总之,AES CFB-128加密算法通过分块和反馈的方式,将明文转化为密文,并且在解密时能够准确还原出原始明文。这种加密算法安全可靠,常用于各种加密通信和数据保护领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值