问题标签 [ctr-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3706 浏览

python - 如何在 PyCrypto AES CTR 模式下设置块大小

我正在尝试通过 Python 中的 PyCrypto 库进行 AES 加密。

我从用户那里读入密码,从文件中读入盐。然后我调用 PBKDF2 从文本密码生成密钥

然后我使用 Random.get_random_bytes 生成一个 IV

然后我从 Crypto.Util 包创建一个计数器

然后我创建一个 AES 对象

但是,当我调用 e 进行加密时

我收到以下错误

从我理解的方式来看,这个错误意味着块密码是 16 个字节,与我在

https://www.dlitz.net/software/pycrypto/api/current/Crypto.Cipher.AES-module.html

我尝试通过创建这样的 AES 对象将其更改为 32 字节块大小

但后来我收到以下错误

如果有人能指出我正确的方向,那就太好了。

0 投票
1 回答
289 浏览

python-3.x - pycryptodome:溢出错误:计数器已在 CTR 模式下环绕

我在 Python 3 上使用 pycryptodome 进行 AES-CTR 加密时遇到了困难。数据可能约为 1000 字节,但当它变得足够长时它会中断。我不明白这个错误应该是什么意思或如何解决它。

0 投票
1 回答
2226 浏览

java - Java AES 计数器模式递增

我使用此答案中的示例代码用 Java 编写了一个加密/解密原型。但是,我正在尝试使用 AES 的计数器模式 (CTR),并且加密的值似乎与我尝试加密的整数序列一样可递增。

考虑我的原型的以下输出:

请注意,这些enc值通常与这些值仅相差dec一个数字。AES 计数器模式生成的加密值通常是可迭代的/彼此相似的,还是我做错了什么?

到目前为止,我已经尝试过使用不同的加密密钥、初始向量、填充方案、更长/更短的整数序列(从不同的值开始)等,但到目前为止似乎没有任何效果。此外,到目前为止,Google 和其他关于计数器模式下 Java AES Cipher 的 SO 问题几乎没有用处。请记住,我是一个加密新手。

我的原型代码如下:

0 投票
2 回答
1106 浏览

objective-c - CCCryptorCreateWithMode ignores padding parameter

I'm trying to use CommonCrypto for crypting with AES-CTR and PKCS7 padding.

I am aware that CTR does not need padding in order to work correctly, there are uses for padding beyond that. Quoting RFC 3686:

For this reason, AES-CTR does not require the plaintext to be padded to a multiple of the block size. However, to provide limited traffic flow confidentiality, padding MAY be included, as specified in ESP.

Section 2.4 of the referenced document is relevant, and lists several uses of padding.

Therefore, I figure CommonCrypto should be able to apply padding to any cipher (mode). The code seems straight forward, breaking down to something like this:

The output is:

Expected: 16 bytes
Actual: 3 bytes

If you check the status codes, you'll find there there are no errors.

I can decrypt the output just fine okay, so encryption itself seems to work just fine. But clearly no padding happens.

I can not debug into the implementations, so I have no idea what's going wrong. Am I using the options incorrectly?


Nota bene: I can make CCCrypt apply padding with kCCOptionPKCS7Padding, but then I don't see a way to select CTR mode.

0 投票
1 回答
700 浏览

objective-c - 如何让 CCCrypt 在另一种模式下计算 AES?

一次性加密方法的签名CCCrypt是这样的(来自CommonCryptor.h):

没有一个参数似乎接受一个CCMode值(可能是偷偷摸摸的,因为所有的枚举都是整数?)。我尝试将它与CCOptions参数结合起来,但无济于事;这两个枚举不是选项,也不要明确组合。

那里没有明确记录,但我从网上发现的情况推测,使用的模式kCCAlgorithmAES是 CBC。

如何更改 AES 模式CCCrypt使用?

0 投票
2 回答
1503 浏览

encryption - 在 DES 算法中使用 CTR 模式(在 python 中)

我想通过使用 PyCryptodome 包在 python 中的 DES 算法中使用 CTR 模式。我的代码出现在这篇文章的末尾。但是我收到了这个错误:“TypeError:不可能为短块大小创建一个安全的随机数”。值得一提的是,此代码适用于 AES 算法,但不适用于 DES、DES3、Blowfish 等(64 块大小)。据我所知,CTR 模式可以应用于 64 块密码算法。

非常感谢。

0 投票
1 回答
1464 浏览

python - 在 python 中编写 AES-CTR 解密例程

我有以下代码

哪里byteKey = []byte("4e8f1670f502a3d40717709e5f80d67c") (不确定这是否是正确的语法,但这是十六进制的关键。)

我的任务是用任何语言编写解密程序,这就是我目前所做的:

我做错了什么我只是不知道是什么。请问高手可以帮忙吗?提前致谢。

0 投票
1 回答
381 浏览

cryptography - libgcrypt 如何为 CTR 模式增加计数器?

我有一个使用 libgcrypt 的 CTR 模式实现使用 AES-256 加密的文件。我希望能够部分解密文件(例如,在不解密整个文件的情况下解密 20 个块中的第 5-10 个块)。

我知道通过使用 CTR 模式,我应该可以做到。我只需要知道正确的计数器。问题在于我所拥有的只是块 0 的初始计数器。例如,如果我想解密块 5,我需要另一个计数器,它是通过对从 0 开始的每个块的初始计数器执行一些操作来实现的到 5。

我似乎找不到 libgcrypt 公开的 API,以便在给定初始计数器的情况下计算后续块的计数器。

给定块#0的计数器,我如何计算后面块(例如块#5)的计数器?

0 投票
0 回答
30 浏览

aes - 我应该使用 aes ctr 模式吗?

我有个问题。例如,我有文本:“快速的棕色狐狸跳过狗!”

它有 32 个字母。如果我 encrypt的前 16 个字母带有键:“11111111111111111111111111111111”和随机数:“1111111111111111”,接下来的 16 个字母使用相同的键和随机数会是secure

0 投票
2 回答
54 浏览

python - 安全有效地替换文件的最佳方法?

我正在尝试使用cryptography模块加密文件,所以我不必缓冲文件的密文,这可能是内存密集型的,然后我必须用加密的文件替换原始文件。所以我的解决方案是加密一个块明文然后尝试一次用 16 个字节的密文替换它(AES-CTR 模式)。问题似乎是循环是一个无限循环。

  • 那么如何解决这个问题。
  • 你建议的其他方法。
  • 下面使用这种方法有什么副作用。