У меня есть строка, которую я хочу расшифровать во время выполнения в своем приложении C # WPF.
Я подумал, что могу использовать следующий код:
using System.Text;
using System.Web;
using System.Web.Security;
[Test]
public void Encrypt()
{
var text = "This is my string";
var stream = Encoding.UTF8.GetBytes(text);
var encodedValue = MachineKey.Protect(stream);
var result = HttpServerUtility.UrlTokenEncode(encodedValue);
}
[Test]
public void Decrypt()
{
var text = "ZG1CrjMgyq5O1krnBxoYM5rXH071xVxFnhC3xTTBiJ05Uy4msSe0jonP-ayFuChh_M6EaEhMif_j7i8yUSQ4Pkc63moEbvq34hMZGfYkazo1";
var stream = HttpServerUtility.UrlTokenDecode(text);
var decodedValue = MachineKey.Unprotect(stream);
var result = Encoding.UTF8.GetString(decodedValue);
}
Однако я получаю
CryptographicException: ошибка произошла во время криптографической операции
ошибка при выполнении команды Unprotect в моем приложении WPF.Есть идеи?
- Если приведенный выше код предназначен только для работы в веб-приложении (т.е. не в WPF), почему он работает при вызове в модульном тесте?