问题标签 [aes-gcm]

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 回答
22641 浏览

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

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

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

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

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

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

0 投票
1 回答
3325 浏览

java - 使用 AES-GCM 的 AAD

我正在用 Java 开发一个有趣的密码学项目。我正在努力理解附加关联数据的使用。从密码文档和进一步的在线研究中,我了解到 AAD 附加到加密数据并经过身份验证,但未加密。因此,它们应该在没有加密密钥的情况下可读。但我不明白,因为它们似乎是在密码初始化后检索到的,所以需要加密密钥!有人能帮我吗?谢谢大家!

0 投票
1 回答
3445 浏览

php - openssl_decrypt 总是返回 false

我试图将我的加密从 mcrypt 迁移到 openssl,但解密一直失败。下面的代码显示了我的加密功能。我将 var_dump 放在加密函数中,以验证使用相同变量的解密是否有效。

我尝试了对代码的以下更改,但都没有奏效:

  • base64_decode($encrypted)
  • 只是出于好奇base64_encode($encrypted)
  • 所有这些变体的选项设置为:0(默认值)、OPENSSL_RAW_DATA、OPENSSL_ZERO_PADDING

PHP版本为7.0.5-1+deb.sury.org~trusty+1

OpenSSL 版本是 OpenSSL 1.0.2g 2016 年 3 月 1 日

为什么让 openssl_decrypt 返回 false?我成功地使用上面一行相同的变量进行了加密。

0 投票
0 回答
116 浏览

android - 通知接收器未能在特定设备中捕获 GCM 消息

当我收到 GCM 通知时,我收到以下错误日志。

W/GCM-DMM:广播意图回调:result=CANCELLED forIntent {act=com.google.android.c2dm.intent.RECEIVE pkg=******(有附加功能)}

条件: 1.当时我的应用程序不在后台和前台。

我该如何解决这个问题。请帮助某人。</p>

0 投票
1 回答
1294 浏览

c# - AES/GCM 如何处理小于块大小的数据?

我在 c# 中使用bouncy castle 库进行加密和解密,我想知道如何处理小于块大小的纯文本?

这是我到目前为止所做的:

当普通数据小于块大小时,它什么也不做。

0 投票
3 回答
13219 浏览

encryption - 为什么随机 IV 对 AES-CBC 很好,但对 AES-GCM 没有

我一直在使用 AES-CBC 进行加密,每次加密纯文本时都会使用随机 IV。据我所知,这是推荐的方法。

我一直在研究 AES-GCM / AES-CTR,主要用于 AEAD。我还没有用这个实现任何东西,但是从我读过的所有内容来看,基本上nonce只是一个短路的IV,并且有一个用于每个加密调用的内部计数器。开发人员 / 需要确保在 32 位计数器循环返回之前更改随机数,否则相同的随机数 (IV) 可能与相同的密钥一起使用,这可能会加密相同的纯文本并泄漏加密密钥。

我不太明白为什么 AES-CBC 可以使用随机 IV,但我读过的一些内容表明 AES-GCM 的随机随机数 (IV) 是一个坏主意。我唯一能想到的是 AES-CBC 的 IV 比 AES-GCM 的 nonce 长,因此 AES-GCM 的重复 nonce 可能更大。

我需要加密从几个字节到 10 - 20 GB 的数据。我知道 AES-GCM 在计数器循环之前可以加密的数据大小(~60GB)有限制。我可以绕过这个限制,因为我的数据低于这个限制。

有人可以解释为什么不建议为 AES-GCM 使用随机随机数吗?

0 投票
1 回答
5207 浏览

c# - 如何从 AES-GCM 获取身份验证标签

我正在使用 BouncyCastle 使用 AES256 GCM 算法加密 C# 中的数据。为此,我使用了James Tuley 提供的实现。下面是这段代码的片段:

我需要获取身份验证标签(在RFC 5084中提到)。它提到身份验证标签是输出的一部分:

AES-GCM 生成两个输出:密文和消息验证码(也称为验证标签)。

我不明白如何从此代码中获取身份验证标签?谁能帮我吗?

0 投票
0 回答
1472 浏览

java - AES-GCM-256 加密

我们需要使用 AES-GCM-256 加密 UUID 字符串,消费者将使用相同的 AES-GCM-256 对其进行解密。根据建议(RFC),IV(初始化向量)对于每次调用必须是唯一的,我很困惑IV 值如何在加密器和解密器之间共享或共享。

0 投票
0 回答
1939 浏览

java - 如何在 AES-GCM-256 中计算身份验证标签

我有一个示例代码,它使用 AES-GCM-256 加密和解密字符串。

我无法理解,如何在加密器端生成身份验证标签以及如何在解密器端使用它。

实际上,这里我既不是在加密器端也不是在验证解密器端生成身份验证标签,所以它是由库本身在内部完成的。

0 投票
1 回答
12412 浏览

java - 找不到任何支持 AES/GCM/NoPadding 的提供商

我们正在尝试在java 7中进行支持 AES/GCM/NoPadding 的加密,使其低于异常。

找不到任何支持 AES/GCM/NoPadding 的提供商

生成密码实例的代码示例如下。