【问题标题】:FlushFinalBlock increases bytesFlushFinalBlock 增加字节
【发布时间】:2020-04-18 17:03:43
【问题描述】:

所以基本上正如标题所说,我只是有一个关于 FlushFinalBlock 的问题。为什么我的加密数据从原始字节大小在到达 FlushFinalBlock 时增加了 16 个字节?

【问题讨论】:

    标签: c# asp.net encryption


    【解决方案1】:

    大多数加密都使用固定大小的块。

    FlushFinalBlock() 必须将最后一个数据段填充到完整的块大小。

    确切的数字取决于加密类型和块大小。填充细节也是一个参数。

    【讨论】:

    • 谢谢,我认为我的加密有问题,因为我在解密时收到“错误长度”
    • 问题是我正在使用混合加密,密钥是 32 字节,变成 128,iv 是 16,总共变成 128 = 256+文件大小,然后在解密中读取 128 字节但我遇到了“长度错误”的错误。当我将解密更改为读取 86 字节时,它不会出现....
    • 并非所有密码模式或密码都适用于固定大小的块。实际上,只有 (P)CBC 和 ECB 以这种方式工作,并且流密码显然不使用块。同样,只有那些模式需要填充——而且它们也可能使用密文窃取。所以我不确定我是否同意这个答案的开头。 OTOH,这似乎很可能就是这个特定问题所发生的情况。
    • 我无法了解详情。如果您需要帮助,请发布minimal reproducible example 类型的问题。 @Toy99
    • @Maarten - 我看不到流密码的使用频率很高,而且 OP 已经提到了 IV。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多