Python AES CTR2024 年 8 月 29 日 | 阅读 6 分钟 你不需要解密每个字节就能获取中间的一些信息。使用 AES CTR 模式时,我们使用提供的加密密钥和 IV 生成一些随机位。我们使用这些随机位与我们的字符串进行异或运算。这会生成一个随机文本。 在理解 Python 中的 AES CTR 模式之前,我们首先应该理解 Python Pycrypto 如何使用 AES 进行解密和加密。
CTR 模式CTR(计数器缩写)是一种常见的 AES 分组密码模式,它允许所有操作并行执行。由于 CTR 还包括将一系列填充向量与明文和密文块进行异或运算,因此它与 OFB 相似。主要区别在于这些填充向量的生成方式。 众所周知,AES 密码库使用 AES256-CBC 来加密和解密数据。 在计算机安全方面,加密是保护数据的最佳技术之一。此外,还有许多种类的加密。 CTR AESAES 加密有一种计数器模式,称为 CTR。它也称为 ICM 和 SIC。 在 AES 加密中,你有一个称为初始化向量(简称 IV)的东西。这通常是一个随机的 128 位输入。在 CTR 模式下,IV 有两个组成部分。前 8 个字节是常规的随机 IV。最后 8 个字节是一个计数器。这个计数器是一个 0 索引,表示你可以访问的加密数据的 128 位块的数量。当加密 512 位数据(64 字节)时,数据中 0 字节处的起始位置计数器为 0;在 16 字节处,计数器为 1;在 32 字节处,计数器高达 2。 以这种方式继续,直到用完所有信息。与标准 AES 加密不同,这种加密可以搜索信息。你不需要解密每个字节就能获取中间的一些信息。 使用 AES CTR 模式时,我们使用提供的加密密钥和 IV 生成一些随机位。我们使用这些随机位与我们的字符串进行异或运算。这会生成一个随机文本。我们只需将文本与我们使用加密密钥和 IV 生成的相同随机位进行异或运算即可解密它们。 模块中 AES 支持的操作模式的常量
创建新 AES 密码的语法参数1. 密钥 (Key): 密钥参数的值为字节、字节数组或内存视图类型。 用作对称密码中的密钥。 必须使用 16、24 或 32 字节(分别用于 AES-128、AES-192 或 AES-256)。 仅当使用 MODE_SIV 时,它才翻倍到 32、48 或 64 字节。 2. 模式 (Mode): 要使用的加密或解密链模式。 关键字参数1. iv: 参数的预期值类型:字节、字节数组或内存视图。 仅适用于模式:MODE_OPENPGP、MODE_OFB、MODE_CFB 和 MODE_CBC。 在 MODE_OPENPGP 模式下,加密时必须为 16 字节长,解密时必须为 18 字节长(在后一种情况下,它实际上是密文前缀的加密 IV)。 对于 MODE_CBC、MODE_CFB 和 MODE_OFB,它必须是 16 字节长。 如果未输入任何内容,则会构造一个随机字节字符串(然后你必须使用 iv 属性读取其值)。 2. nonce: 参数的预期值类型:字节、字节数组或内存视图。 仅适用于模式:MODE_EAX、MODE_CCM、MODE_GCM、MODE_OCB、MODE_SIV 和 MODE_CTR,该值不能再次用于此密钥在任何其他上下文中的加密。 对于 MODE_EAX、MODE_GCM 和 MODE_SIV 没有长度限制(推荐:16 字节)。 其长度必须在 [7..13] 之间才能与 MODE_CCM 兼容。请记住,在使用 CCM 时,nonce 长度和最大消息大小之间存在权衡。建议使用 11 字节。 对于 MODE_OCB,其长度必须在 [1..15] 范围内(推荐:15)。 对于 MODE_CTR,其长度必须在 [0..15] 范围内(推荐:8)。 对于 MODE_SIV,nonce 是可选的;如果未提供,则不使用 nonce,使加密具有确定性。 对于 MODE SIV 以外的模式,如果未提供,则使用建议长度的随机字节字符串(之后,你必须使用 nonce 属性读取其值)。 3. segment_size: 参数的预期值类型:整数 仅适用于模式:MODE_CFB,明文和密文之间的比特数。必须是 8 的倍数。如果未另行说明,则视为 8。 4. mac_len: 参数的预期值类型:整数 仅适用于模式:MODE_EAX、MODE_GCM、MODE_OCB 和 MODE_CCM,认证标签的字节长度。 它必须在 [4..16] 范围内且为偶数。建议值为 16(如果未给出,则也作为默认值)。 5. msg_len: 参数的预期值类型:整数 仅适用于模式:MODE_CCM,必须(解)密的邮件长度。如果未提供,则在调用加密时必须传递完整消息。与加密一样,解密只能使用一次。 6. assoc_len: 参数的预期值类型:整数 仅适用于模式:MODE_CCM,相关信息的长度。如果未提供任何内容,所有连接的数据都会在内部缓冲,这对于特别大的消息可能会出现问题。 7. initial_value: 参数的预期值类型:整数、字节、字节数组或内存视图。 仅适用于模式:MODE_CTR,计数器的起始点值。如果缺失,密码将从 0 开始计数。对于每个块,该值增加 1。计数器数字以大端模式编码。 8. counter: 一个计数器块,可通过 Crypto.Util.Counter 实例完全自定义。 nonce 和 initial_value 参数不能同时使用。 9. use_aesni: Intel AES-NI 硬件扩展使用此功能(如果可用,则使用默认值)。 返回它返回一个具有所需模式的 AES 对象。 创建新 CTR 密码的语法计数器块的长度等于密码块的大小(例如,AES 为 16 字节)。它由两部分的连接组成
在 Crypto.Cipher 的组件级别,使用 new() 函数为适当的基本算法创建一个新的 CTR 密码对象。以下定义中的算法可以是 AES 它使用基本密码学 <算法> 创建一个新 CTR 对象。 参数 以下是 CTR 密码的参数。
返回值 它返回一个 CTR 密码的对象。 CTR 密码对象的 encrypt() 和 decrypt() 函数接受任意长度的数据(即不需要填充)。一旦计数器完成一个完整的旋转并重复初始值,两者都会抛出 OverflowError 异常。 CTR 密码对象上有一个名为 nonce 的只读属性(字节)。 结论在本文中,我们讨论了 Python 中的 AES CTR 模式,但首先,我们必须了解 Python Pycrypto 如何使用 AES 进行解密和加密。我们还讨论了创建新 AES 密码和新 CTR 密码的语法和参数。 下一主题Curdir Python |
问题是给定一个整数数组,我们需要找到数组中的第 k 个最小元素,其中 k 是一个小于或等于数组长度的正整数。让我们看下面的示例。示例 - 输入:arr = [7, 4, 6, 3,...
5 分钟阅读
列表是 Python 中一个至关重要的容器,因为它能够存储所有类型数据的元素作为集合。了解特定的列表操作对于日常编程至关重要。本文将讨论最基本的列表操作之一,...
阅读 4 分钟
如果你已经编程一段时间了,你一定用过字符串。你可能已经通过 print 语句打印了大约十万个字符串,并解决了成千上万个错误。但有一个问题,“你是否曾经尝试插入一个双引号...
5 分钟阅读
在数据分析和决策中,统计学至关重要,它提供对不确定性和可变性复杂世界的洞察。从预测股票市场趋势到理解遗传特征,统计分布是建模和分析的基石。其中一个在...
阅读9分钟
二叉堆是 Python 中一种重要的非线性数据结构。堆是一棵完全树。堆是一种名为优先队列的数据结构的高效实现。W. J. Williams 于 1964 年引入了二叉堆,其主要目的是实现...
7 分钟阅读
Python 是脚本语言的定义,可以以多种方式使用。脚本语言 Python 使用许多解释器,每个解释器都不同。由于它将是 2023 年增长最快的编程语言,因此有大量的 Python 解释器可用......
阅读 12 分钟
命令行参数和解析输入参数是编程和开发的重要方面。命令行参数不过是在程序名称之后在系统命令行中指定的参数。当我们在这些命令行参数中传递值时,这些值会直接传递到...
阅读20分钟
Pandas Pandas 是 Python 中内置的库,用于处理 Python 编程语言中的关系数据。它有许多函数和数据结构,有助于关系数据的操作。如果数据以行形式存储...
阅读 4 分钟
在本教程中,我们将学习如何使用 Python 计算前 n 个自然数的平方和。我们有一个正整数 "N",我们的任务是计算 (12 + 22 + 32 + 42 + 52 +… + N2) 示例:输入:N =...
阅读 3 分钟
本文将演示如何使用 PyQt5 构建倒计时计时器应用程序。使用计时器(一种用于测量特定时间间隔的特殊时钟)时,我们必须从给定时间倒计时直到它达到零。实现 GUI 的步骤...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India