-1

计划添加对以下 Enc Algo 的支持:

通过基于 JDK 1.8 的实现,参考javax.crypto.spec.GCMParameterSpec& javax.crypto.Cipher。在这里,我知道 Cipher 需要 GCMParameterSpec 对象:

public final void init(int opmode, Key key, AlgorithmParameterSpec params)

现在想知道上面列出的用于创建GCMParameterSpec对象的所有算法的 ( IV & tLen ) 值是多少。

对于上面列出的不同算法,这些值是否会有所不同(不,在我看来,唯一的变化是密钥大小)

并请描述 GCMParameterSpec 的这两个属性(IV & tLen)的用途

4

1 回答 1

2

来源:_

就本规范而言,AES-GCM 应与 96 位初始化向量 (IV) 和 128 位认证标签 (T) 一起使用。

需要 IV 或随机数(number-used-once)以确保相同的消息不会加密为相同的值。对于下面使用 CTR 模式的 GCM 模式,IV永不重复至关重要

如果你继续阅读,你会发现:

对于本规范使用的伽罗瓦/计数器模式 (GCM),IV 不得用于任何密钥并且应该是随机的,但它不必是秘密的。

SecureRandom对于 Java,这意味着从实例中检索 12 个随机字节;只是获得使用new SecureRandom()是可取的。


身份验证标签当然会验证密文,从而验证加密的消息。这将确保保持消息的真实性和完整性。对于 GCM,身份验证标签的大小很重要;最好保持在最大值。128 位的大小,这个规范确实如此。


密钥大小确实与 IV 和身份验证标签的大小完全分开。

如果不确定,请阅读标准

于 2018-04-04T20:42:48.207 回答