JAVA 中的密码用于获取给定纯文本的密文。话虽如此,javax.crypto.NullCipher 的真正需要是什么。
根据 [Oracle Docs],( https://docs.oracle.com/javase/8/docs/api/javax/crypto/NullCipher.html ) NullCipher 类是一个提供“身份密码”的类——不转换纯文本的一种。因此,密文与明文相同。
然后只是想了解 NullCipher 类的真正需求是什么以及它的用例是什么?
JAVA 中的密码用于获取给定纯文本的密文。话虽如此,javax.crypto.NullCipher 的真正需要是什么。
根据 [Oracle Docs],( https://docs.oracle.com/javase/8/docs/api/javax/crypto/NullCipher.html ) NullCipher 类是一个提供“身份密码”的类——不转换纯文本的一种。因此,密文与明文相同。
然后只是想了解 NullCipher 类的真正需求是什么以及它的用例是什么?
NullCipher
确实对测试很有用。例如,它可以用于实现TLS_RSA_PSK_WITH_NULL_SHA
具有类似目的的密码套件。因此,您将保留所有代码 - 包括 IV 生成、Cipher
实例等,但只需关闭加密和机密性,其余部分 - 记录解析、握手、实体身份验证和消息完整性 - 保持不变。
可以通过这种方式检测传输或中间编码/解码错误。如果明文不能与 . 一起存在NullCipher
,那么问题显然不在于解密。请注意,1 字节的块大小可能会隐藏块大小为 8 字节 (3DES) 或 16 字节 (AES) 的密码的错误。换句话说,NullCipher
充当流密码。这并不奇怪:毕竟它只是简单地返回明文——不需要任何块。
应注意此类功能已被删除、禁用或至少在默认情况下不为非调试版本启用。请注意,NullCipher
仍然会创建数据的副本。因此,我不会使用它来实现在发布版本中加密/不加密之间的选择。