当我解密密文时,CommonCrypto 是否可靠地知道我的密钥何时无效?
当我尝试使用错误的密钥解密密文时,CCCrypt 返回 kCCDecodeError。
问题是,它这样做是否可靠(例如,我是否保证,如果它返回成功,我的输入密钥就是用于加密纯文本的密钥,并且我是否也保证我的输出数据是我的原始纯文本)以及如何它甚至可以知道我的密钥是否正确吗?
据我对加密的理解,引擎无法预测密钥是否有效,应该只给我随机噪声作为输出数据和成功的返回代码。
When I try to decrypt a cipher text using the wrong key, CCCrypt returns kCCDecodeError.
Question is, does it do so reliably (eg. am I guaranteed that if it returns success, my input key was the key used to encrypt the plain text, and am I also guaranteed that my output data is my original plain text) and how can it even know whether my key is correct or not?
As far as I understood crypto, the engine cannot predict whether the key is valid and should just give me random noise as output data and a successful return code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您指定了 PCKS7 填充 (kCCOptionPKCS7Padding),那么它可以判断您是否未能正确解密 - 大多数情况下。错误密钥的随机结果有可能导致消息的最后几位看起来像有效的 PKCS7 填充。
它可以检测到的唯一另一件事是您的密钥是否根本不是有效长度。
If you specified PCKS7 padding (kCCOptionPKCS7Padding) then it can tell if you failed to decrypt it properly - most of the time. There is a chance that the random result of the wrong key could cause the last bits of the message to look like valid PKCS7 padding.
The only other thing it can detect is if your key is not a valid length at all.