【问题标题】:In C#, how to add data padding?在 C# 中,如何添加数据填充?
【发布时间】:2013-07-12 04:35:14
【问题描述】:

有时您需要将数据(字节流)填充到离散的块大小。例如,ProtectedMemory 只能对 16 字节的倍数的数据块进行操作。我知道一些其他类,如 ProtectedData 和 AESCryptoServiceProvider 和 AESManaged 内置了对填充的支持,但对于那些没有内置它的类......你如何为 ProtectedMemory 填充数据?

当然,我可以自己编写它,遵守 ANSIX923 或 ISO10126 或 PKCS7 等标准,但 必须 是让 .Net 做到这一点的好方法。我原以为该功能会成为 Stream 或 MemoryStream 的一部分……除了专门的加密类,我在任何地方都找不到它。

【问题讨论】:

    标签: c# arrays byte padding


    【解决方案1】:

    使用 ProtectedMemory 存储 16 或 32 字节的加密密钥,然后使用 AESManaged 或 AESCryptoServiceProvider 使用填充来保护和存储您的数据。或者使用 ProtectedMemory 存储 16 或 32 字节的 optionalEntropy,然后使用 ProtectedData 使用填充来保护和存储您的数据。

    【讨论】:

    • 不会在任何不运行 Windows 的设备上工作,您也可以只编写数据块并添加 0 进行填充,如果您收到带有填充消息的 CryptographicException 则默认为零进行填充跨度>
    猜你喜欢
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2015-08-31
    • 1970-01-01
    相关资源
    最近更新 更多