1

JAVA 中的密码用于获取给定纯文本的密文。话虽如此,javax.crypto.NullCipher 的真正需要是什么。

根据 [Oracle Docs],( https://docs.oracle.com/javase/8/docs/api/javax/crypto/NullCipher.html ) NullCipher 类是一个提供“身份密码”的类——不转换纯文本的一种。因此,密文与明文相同。

然后只是想了解 NullCipher 类的真正需求是什么以及它的用例是什么?

4

1 回答 1

1

NullCipher确实对测试很有用。例如,它可以用于实现TLS_RSA_PSK_WITH_NULL_SHA具有类似目的的密码套件。因此,您将保留所有代码 - 包括 IV 生成、Cipher实例等,但只需关闭加密和机密性,其余部分 - 记录解析、握手、实体身份验证和消息完整性 - 保持不变。

可以通过这种方式检测传输或中间编码/解码错误。如果明文不能与 . 一起存在NullCipher,那么问题显然不在于解密。请注意,1 字节的块大小可能会隐藏块大小为 8 字节 (3DES) 或 16 字节 (AES) 的密码的错误。换句话说,NullCipher充当流密码。这并不奇怪:毕竟它只是简单地返回明文——不需要任何块。

应注意此类功能已被删除、禁用或至少在默认情况下不为非调试版本启用。请注意,NullCipher仍然会创建数据的副本。因此,我不会使用它来实现在发布版本中加密/不加密之间的选择。

于 2020-04-28T01:01:17.243 回答