using System.Security.Cryptography; using System.Text; public void SetCookie(string name, string value, string key) { var data = Encoding.UTF8.GetBytes(value); var hmac = GenerateHMAC(data, key); var cookie = new HttpCookie(name, Convert.ToBase64String(data) + "|" + hmac); HttpContext.Current.Response.Cookies.Add(cookie); } public string GetCookie(string name, string key) { var cookie = HttpContext.Current.Request.Cookies[name]; if (cookie != null) { var parts = cookie.Value.Split('|'); if (parts.Length == 2) { var data = Convert.FromBase64String(parts[0]); var hmac = GenerateHMAC(data, key); if (hmac == parts[1]) { return Encoding.UTF8.GetString(data); } } } return null; } private string GenerateHMAC(byte[] data, string key) { var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key)); var hash = hmac.ComputeHash(data); return Convert.ToBase64String(hash); }