Как насчет использования шифрования машинного ключа для этого?Насколько я знаю, не существует простого способа сделать это, но вы можете взломать свой путь в фреймворке, используя рефлексию.Ключ машины либо не хранится, либо хранится только частично.Если вы настроите ASP.NET для «Генерирования уникального ключа для каждого приложения», для получения ключа будет использован путь к приложению.
Код будет выглядеть примерно так:
private static MethodInfo _cookieEncryptMethod;
private static MethodInfo _cookieDecryptMethod;
public static string MachineKeyEncrypt(string data)
{
if (_cookieEncryptMethod == null)
{
_cookieEncryptMethod = Type.GetType("System.Web.Security.CookieProtectionHelper").GetMethod("Encode", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
}
var dataBytes = Encoding.UTF8.GetBytes(data);
return (string) _cookieEncryptMethod.Invoke(null, new object[] { CookieProtection.All, dataBytes, dataBytes.Length });
}
public static string MachineKeyDecrypt(string source)
{
if (_cookieDecryptMethod == null)
{
_cookieDecryptMethod = Type.GetType("System.Web.Security.CookieProtectionHelper").GetMethod("Decode", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
}
var data = (byte[]) _cookieDecryptMethod.Invoke(null, new object[] { CookieProtection.All, source });
return Encoding.UTF8.GetString(data);
}