如何在 C# 中手动使用 PKCS5 (RFC 1423) 填充进行 AES 解密

本文关键字:1423 RFC 填充 解密 AES PKCS5 | 更新日期: 2023-09-27 18:33:59

我的公司有一个为我们加密数据的旧库。它无法在我们的新环境中使用,因此我正在尝试为我们的旧数据编写解密方法。

加密数据具有PKCS5的填充,又名RFC 1423。在使用.net AesCryptoServiceProvider类的过程中,我注意到枚举器中没有内置这样的填充方案。到目前为止,我所有解密的数据都是胡言乱语。我们这里没有密码学专家,我正在即时学习。任何帮助的指示将不胜感激。

我目前正在实现此处的代码。

这个问题也张贴在密码学网站上 这里. 但是,他们似乎没有专门针对 .net,所以我也想与这里的专家核实一下。

编辑

旧加密具有以下设置,手动完成时似乎会导致 .net 错误 - 特别是 IV 和块大小。

块大小: 16
密码模式:CBC
密码算法:aes
哈希:sha1
IV: 字节[0]
密钥长度: 128
盐: 字节[0]
键:字节[16]

因此,密钥和块大小根据需要匹配,但没有 IV 集会在 .net 中引发错误,并且块大小会引发错误。

如何在 C# 中手动使用 PKCS5 (RFC 1423) 填充进行 AES 解密

查看 AesCryptoService 填充文档,默认填充为 PKCS#7。PKCS#7 填充是 PKCS#5 填充的超集。

有关详细信息,请参阅填充模式枚举。

PKCS#

5 填充仅针对 8 字节块大小定义,PKCS#7 填充将定义的块大小扩展到 256 字节。PKCS#5 从来都不是 AES 的正确填充,AES 具有 16 字节的块大小,但名称使用是从其他历史加密库中继承而来的。

请参阅 PKCS#7 填充。