问题标签 [initialization-vector]

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 投票
2 回答
8289 浏览

openssl - 初始化向量 (IV) 中的数字全为零

我无法理解以下句子:“初始化向量 (IV) 中的数字全为零(不是 ASCII 字符 '0')。

我的目标是使用 openssl enc 命令使用 aes-128-cbc 和密钥 K(比如说 1234567890)和满足此类要求的 iv 来加密文件。

到目前为止,我尝试过不放置 -iv 选项,但它会显示“iv undefined”,因为如果使用选项 -K,则必须提供选项 -iv。我尝试使用-iv 0但我不确定它是否正确。

例如,我使用了:

请您帮我说明满足上述要求的正确 iv 吗?

0 投票
2 回答
377 浏览

c# - Rijndael PHP vs C# - C# 中的 KeySize 无效,但 PHP 中没有

我尝试在 C# 中使用 Rijndael 加密一个字符串 (json) 并提出一个字符串,我可以将其提供给 PHP Web 服务。该 Web 服务反过来使用 IV 和主密钥(他们知道)对字符串进行解码。我必须编写可以与 PHP 服务对话的 C# 代码,我不控制/拥有 PHP 服务。

加密的PHP代码如下:

我必须将上面的代码转换为 C#,这样我才能加密我的 JSON 并将其提供给 PHP Web 服务。

有两个问题。第一个是主密钥长度,第二个(可能相关)是加密数据的 rawurlencode(我现在很难测试)。

EncryptStringToBytes 进行一些检查并使用此代码(摘自互联网上的许多示例):

我会得到的错误:

所以,简而言之,问题是:

1) 为什么 PHP 代码在 Rijndael 256(CBC 模式)中接受长度为 29 的密钥,而我的 C# 不接受?我玩过模式,后来添加了填充,设置了 KeySize(已经是 256 默认值),我只是看不出我在这里做错了什么。

2)当我使用长度为 32 的密​​钥时,这个密钥被接受并且我的代码有效。我也可以在 C# 中解密它(但不能在 PHP 中测试它)。我想解决问题1,然后继续解决问题2,但也许有人可以在这里给我一些理解。加密的字符串在 IV 中包含 1 个“=”,在加密的 json 中包含 2 个“==”(在末尾)。我已经阅读了有关填充等的信息,但我想知道为什么在我收到的 PHP 示例中看不到“=”符号。同样,也许在解决问题 1 之后,这将不是问题。

非常感谢您的阅读,我希望我在这里不会太愚蠢。经过昨天一天的尝试,我感觉我尝试了许多不同的方法,但似乎都不起作用。

0 投票
1 回答
373 浏览

.net - 知道加密 AES 256 时使用的盐

我有一个类似" abd123456"的密码,我使用 AES-256 加密进行加密。经过 Base-64 编码后,结果将是 44 个字符的字符串:

IXCgaa5igYxzKTRTP+PMT7Bt9iIWiF6EWLmnKqZtlXI=

我如何知道 .NET Framework 的RijndaelManaged AES 加密类在加密期间使用的盐?

我知道被加密的明文和加密密钥。但是我怎么知道使用的呢?

0 投票
1 回答
83 浏览

cbc-mode - IV的随机性:为什么需要IV的保密却不需要IV?

CBC 等方案中使用的 IV 必须是随机且不可预测的。但与此同时,它不必保密。

如果 IV 不必是秘密的,那为什么它必须是随机的呢?我无法理解这些看似矛盾的要求。

我已经看到了利用非随机性的攻击的描述。所以,我会理解为什么需要随机性。但是,当要求指定 IV 不必保密时,事情就会变得混乱!这似乎违背了随机性的整个目的。

请有人帮助澄清这一点。

0 投票
1 回答
1289 浏览

php - 在 openssl_random_pseudo_bytes 的输出上使用 bin2hex() 是否安全?

bin2hex()在输出上使用openssl_random_pseudo_bytes()并将mcrypt_create_iv()它们作为十六进制而不是二进制原始数据用作 IV是否安全可靠,或者这是一种安全风险并且不推荐?

0 投票
1 回答
291 浏览

cryptography - 如果我对 iv 参数保密,它是否仍然需要在 AES/CBC 中是随机的?

只要 key 和 iv 保密但相同,它是否会给安全性带来问题?谢谢。

更新:我做了一些研究并了解了为什么使用 iv。正如下面的答案中提到的,它是一种防止频率攻击的保护方式。并且在创建iv时有两个要求:唯一性和不可预测性。

我认为创建 aes 密钥和 iv 的算法是:通过使用非对称加密从之前同意的某个椭圆曲线点获取两个值。(x,y)

并将数据共享为 {encryptedmessage, timestamp}

这个逻辑好吗?

0 投票
2 回答
22641 浏览

java - 与 IV 一起使用时,带有 BouncyCastle 的 AES-GCM 会抛出“GCM 中的 MAC 检查失败”

我对开发加密技术比较陌生。现在我正在尝试编写一个使用带有 AES-GCM 的 BouncyCastle 加密和解密字符串的类。我阅读了实施加密时必须考虑的事项。其中之一是您应该始终使用随机 IV。问题是,每次我尝试用 IV 初始化我的密码时,它都无法正确解密我的文本。
它只是抛出以下异常:

我正在使用以下方法来加密和解密我的数据。

如果我从 cipher.init(...) 中删除“generateIV(cipher)”,一切都会完美无缺。但据我所知,它极大地削弱了加密。

知道我无法弄清楚这是代码中的一个小错误还是我一无所知的其他东西。

我非常感谢您的帮助,非常感谢!

0 投票
1 回答
1518 浏览

cryptography - 来自 RSA 私钥的 AES 密钥和 iv

私有 RSA 密钥(私有指数、模数和素数)的内容与 AES-128-cbs 密钥和 iv 之间是否存在关系?

我知道您可以使用 AES 加密您的私钥,在这种情况下,pem 文件中提供了 AES-iv,并且使用 MD5 通过秘密密码和 AES-iv 的前 8 个字节计算了 AES-key。

但是,我有 AES 加密数据和一个可以读取的私有 RSA 密钥。是否有关于如何从 RSA 密钥内容(可能来自内部的素数)中导出 AES 密钥和 AES-iv 的标准。是否有一些通常使用的标准?

0 投票
2 回答
545 浏览

encryption - keydata and IV for aes in tcl

I have a tcl/tk based tool, which uses network password for authentication. Issue is that, it is saving password in the logs/history. So objective is to encrypt the password.

I tried to use aes package. But at the very beginning aes::init asks for keydata and initialization vector (16 byte). So how to generate IV and keydata. Is is some Random number? I am a novice in encryption algorithms.

0 投票
1 回答
991 浏览

c# - Force generation of Initialization Vector 32 bytes (16 characters) in length

I want to generate an Initialization Vector (IV) for my AES encryption method. I have defined the key size as 256 (since I am using AES) so my IV needs to 32 bytes in length (256 / 8). I wish to store the IV as a string representation so using UTF-8, this would equate to a 16 character string.

Here is the code I am using to generate and return the IV ...

How do I go about making sure that the IV is 16 characters in length? Can I count on a 16 character length being generated because I am using an AES library? AesCryptoServiceProvider