【发布时间】:2012-12-16 16:04:25
【问题描述】:
我正在尝试用带有 ASP.NET 4.5 的新 MachineKey.Protect 和 Unprotect 方法替换已弃用的 Encode 和 Decode 方法。我也使用旧方法来加密和解密 cookie 值,但现在当调用 Unprotect 方法时,我有一个 CryptographyException。
我认为这与尝试在 cookie 值中保存保护方法发出的二进制数据的字符串表示有关。
方法很简单:
Public Shared Function Encode(text As String) As String
If String.IsNullOrEmpty(text) Then
Return String.Empty
End If
Dim stream As Byte() = Encoding.Unicode.GetBytes(text)
Dim encodedValue As Byte() = MachineKey.Protect(stream, "test")
Return Encoding.Unicode.GetString(encodedValue)
End Function
Public Shared Function Decode(text As String) As String
If String.IsNullOrEmpty(text) Then
Return String.Empty
End If
Dim stream As Byte() = Convert.FromBase64String(text)
Dim decodedValue = MachineKey.Unprotect(stream, "test")
Return Encoding.Unicode.GetString(decodedValue)
End Function
关于如何使用 cookie 值实现新方法的任何提示?还是我应该坚持使用已弃用的编码/解码方法或 cookie 编码的一些替代方法?
【问题讨论】:
标签: cookies encode asp.net-4.5