问题标签 [asymmetric]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
215 浏览

c# - 试图了解为什么填充在此 AES 方法中无效

我正在将一个较旧的应用程序移植到.Net 6,并且遇到了加密/解密方法的绊脚石,现在失败了。它在 .Net 4.xx 下仍然可以正常工作

抛出的错误是,

"Padding is invalid and cannot be removed."

代码: - 更新为实际的原始代码。此代码在针对 .Net 4.7.2 时运行良好,但是在将代码移动到 .Net 6.0 RC2 后,它开始丢失大于 32 个字符的解密字符串,这会导致其他地方出现错误,因为字符串不完整。

对于上下文。这是在虚拟主机和桌面客户端上运行的,用于加密传输中的消息。webhost 已更新并验证发送正确的加密值(使用 .Net 4 客户端解密消息是成功的)。但是,.Net 6 桌面客户端没有正确解密它,并且在解密的字符串中丢失了字符。

这被称为,

我假设保存 IV 应该可以解决这个问题,但我想知道这里是否有我没有看到的明显缺陷。

谁能解释一下?

更新:正如建议的那样,我已将代码重构为以下内容。我还立即将其剥离,以确保底层算法的工作。

参考:https ://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aes?view=net-6.0

它仍然抛出填充错误!