问题标签 [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.
cryptography - 您应该在 ipsec 中验证初始化向量吗?
根据 RFC4106,我正在尝试在传输模式下以 ESP 的形式实现 IPSEC,并在 galois/counter 模式下使用 aes。
我应该将初始化向量放在转换后的数据包中密文之前。
它应该是经过身份验证(但未加密)的数据的一部分吗?(我假设你不加密它......)
我看不到 RFC 在哪里指定了这一点。它应该是显而易见的吗?如果是,为什么?
encryption - GCM乘法实现
我在此处的 GCM SP-800-38D 文档中为块乘法(算法 1)提供了 C 代码。第 11-12 页。
完成代码后,我想看看是否有任何方法可以测试代码。您可以在我提供的代码下方找到附件。请注意,我使用 24 位块代替了 128 位块,仅用于测试目的。如有必要,我将不胜感激。
c# - c# 中的 AES GCM 实现
我在 C# 中以 GCM 模式实现 AES 密码。我的问题与“其他经过身份验证的数据”(AAD)有关。在以下代码中
http://blogs.msdn.com/b/shawnfa/archive/2009/03/17/authenticated-symmetric-encryption-in-net.aspx
目前还不清楚我应该从哪里获得 AAD,以及在解密期间我应该如何检索特定于该加密的 AAD:
任何有关如何使用此 AAD 的说明将不胜感激。谢谢
aes - GCM、CCM 或 CBC-MAC 模式下的 AES 密码?
我一直在寻找一篇用外行术语描述这些模式的文章,但还没有发现任何有用的东西。那么,每种模式的优缺点是什么?谢谢
GCM
CCM
CBC-MAC
c - 使用 EVP 接口的 AES-GCM 的 OpenSSL C 示例
对于 AES-GCM 加密/解密,我试过这个,但它有一个问题。
这段代码工作正常(有一些修改)。它正在加密和解密消息。问题是在解密之前修改密文时,它仍然解密文本(但是,错误)。根据我对认证加密的理解,在这种情况下,它不应该解密修改后的密文。
我哪里错了?我可以使用 OpenSSL 的 EVP 接口获得任何合适的 AES-GCM 示例吗?
java - BouncyCastle GCM/CCM ArrayIndexOutOfBoundsException
谁能给我一个在 BouncyCastle 中使用 GCM 和/或 CCM 模式与 AES 的示例?
我的代码是这样的:
但在 GCM 模式下解密时会引发此异常(第 70 行是bOut.write(block, 0, i);
):
在 CCM 模式下加密时出现此异常(第 70 行是bOut.write(block, 0, i);
):
java - 在 JAVA 中使用 AES/GCM 检测不正确的密钥
我正在使用 BouncyCastle 模式AES
加密/解密一些文件。
虽然我证明了错误的解密密钥,但也不例外。
我应该如何检查密钥是否不正确?
我的代码是这样的: GCM
谢谢
cryptography - OpenSSL GCM 解密中的后期身份验证
我正在使用 OpenSSL 的 EVP 接口来实现使用 GCM 模式的 AES 加密。
现在 GCM 作为身份验证模式之一,提供了密文完整性。这意味着它会在密文(以及附加数据,如果提供)上生成标签(MAC - 消息验证码)。稍后可以在解密之前检查此标签,以确保密文没有被修改。
我已经按照这篇博文实施了加密:http: //incog-izick.blogspot.in/2011/08/using-openssl-aes-gcm.html
在解密时,我正在使用以下 API 调用(按此顺序):
问题是,如果我修改密文或 AAD,密文仍然被解密,并且在解密过程的最终调用中检测到错误,即在对 EVP_DecryptFinal 的调用中。返回零值表示错误。
在我看来,应该在 EVP_DecryptUpdate 调用本身中引发错误并且解密应该失败。后期错误检测违背了认证加密的目的。
这里有什么问题?
android - Android、AES-GCM 或普通 AES 上的数据加密?
我的团队需要开发一种解决方案,byte[]
在用 Java 编写的 Android 应用程序的上下文中加密二进制数据(存储为 )。加密后的数据会以多种方式传输和存储,期间不能排除数据损坏的可能。最终,另一个 Android 应用程序(同样是用 Java 编写的)必须解密数据。
已经决定加密算法必须是 AES,密钥为 256 位。但是,我想就我们应该使用哪种 AES 实现和/或“模式”做出明智的决定。我读过一种叫做 GCM 模式的东西,我们已经用它做了一些测试(使用 BouncyCastle/SpongyCastle),但我并不完全清楚 AES-GCM 到底是做什么用的,以及与普通模式相比它“购买”我们的是什么AES - 以及是否需要考虑任何权衡。
以下是我们的关注/要求/问题列表:
填充:我们需要加密的数据并不总是 128 位的倍数,因此 AES 实现/模式应该添加填充,但仅在必要时。我的印象是,简单的 AES 实现(例如由 提供
javax.crypto.Cipher
)不会这样做,但最初的测试表明确实如此。所以我猜测填充要求本身并没有理由求助于 GCM 而不是“普通”AES。那是对的吗?身份验证:我们需要一种万无一失的方法来检测是否发生了数据损坏。但是,理想情况下,我们还希望检测何时尝试使用不正确的密钥进行解密。因此,我们希望能够区分这两种情况。我最终考虑 GCM 的原因首先是由于这个Stackoverflow 问题,其中一位响应者似乎暗示使用 AES-GCM 可以进行这种区分,尽管他没有提供详细的解释(更不用说代码了) .
最小化开销:我们需要限制加密数据的存储和传输开销。因此,我们希望了解特定 AES 实现/模式的选择是否以及在多大程度上会影响开销量。
加密/解密性能:虽然这不是主要问题,但我们想知道特定 AES 实现/模式的选择在 CPU 时间和内存占用方面影响加密和解密性能的程度。
提前感谢您提供任何建议、说明和/或代码示例。
编辑: delnan 有用地指出没有“普通 AES”之类的东西。所以澄清一下,我的意思是使用 Java 的内置 AES 支持。
像这样:Cipher localCipher = Cipher.getInstance("AES");
openssl - 使用 openssl 解密 AES-GCM 文件
我目前正在尝试使用 openssl 解密给定的文本。我尝试使用那里给出的示例编写自己的代码: OpenSSL GCM 解密中的后期身份验证, 但最终我的结果仍然很糟糕。我的解密函数如下:
除了 AAD 之外的所有数据都是以前通过读取文本文件给出的(我有一个加密数据列表、使用的密钥/Iv、MAC 和解密后预期的结果)经过几次实验,出现以下问题: - 结果是与预期不同 - 修改 MAC 不会影响结果(明文) - 抑制 AAD 不会影响结果。
我真的不知道为什么它不起作用。如果您有任何想法、提示或具体示例,这将是一个很大的帮助
此致