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 加密模式和填充方式的确定

首先

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值