我有一个 REST 服务(C#/IIS),其中少量数据使用以下方法加密:
var encryptedText = MachineKey.Encode(bytes, MachineKeyProtection.All)
加密的字符串稍后会发布(到 REST 服务)并使用以下方法解码:
MachineKey.Decode(encryptedText, MachineKeyProtection.All)
MachineKey 是自动生成的,如 web.config 所示:
<machineKey
decryption="AES"
decryptionKey="AutoGenerate"
validation="AES"
validationKey="AutoGenerate" />
系统从.Net 4.5.1升级到4.5.2后,我无法再解密升级前加密的字符串;它给出了一个 HttpException“无法验证数据”。(我可以解密升级后加密的字符串。)
所以在 4.5.1 和 4.5.2 之间发生了一些变化,使得它们不兼容的算法。我无法在网上找到有关此特定问题的任何信息。有没有人有关于这个问题的具体细节和/或使其工作的解决方法?
如果重要的话,该项目的目标是.Net 4.0,而不是 4.5 或 4.5.1 或 4.5.2。
(顺便说一句,听起来不建议将 MachineKey.Encode/Decode 用于短期加密以外的任何事情,可能是因为这类问题?另外,我知道 Encode/Decode 现在已弃用,但我已有系统,此时无法更改。)
更新
只有当键是自动生成时,这才是问题。如果我给他们明确的值,升级后一切都会继续正常工作。