C99 и C++ 03 стандарта доступны в книжной форме от Wiley:
Плюс, как уже упомянуто, рабочий проект для будущих стандартов часто доступен от веб-сайтов комитета:
Тебе, наверное, не стоит этого делать. Если файл cookie является конфиденциальным, храните его только на сервере.
Если вам действительно нужно, есть несколько способов сделать это. Во-первых, вам нужно будет преобразовать открытый текст в массив байтов, например:
var plainBytes = Encoding.UTF8.GetBytes(plaintext);
Если вы уверены, что ваш открытый текст никогда не будет использовать Unicode, вы можете использовать вместо него Encoding.ASCII
; это приведет к уменьшению размера файла cookie).
Затем вам нужно будет его зашифровать. Самый простой способ сделать это - использовать DPAPI, вот так. (Сначала добавьте ссылку на System.Security.dll
). Обратите внимание, что это не будет работать на ферме серверов.
var encryptedBytes = ProtectedData.Protect(plainBytes, null, DataProtectionScope.CurrentUser);
Наконец, вам нужно преобразовать его обратно в текст, чтобы вы могли поместить его в cookie. Лучше всего это сделать в Base64, например:
Response.AddCookie("MyEncryptedCookie", Convert.ToBase64String(encryptedBytes));
Чтобы расшифровать cookie, вам нужно отменить эти шаги, например:
var encryptedBytes = Convert.FromBase64String(Request.Cookies["MyEncryptedCookie"].Value);
var decryptedBytes = ProtectedData.Unprotect(encryptedBytes , null, DataProtectionScope.CurrentUser);
var plaintext = Encoding.UTF8.GetString(decryptedBytes);
Обратите внимание, что файл cookie будет очень большим даже для небольших открытых текстов.
Если вы хотите использовать его на ферме серверов, вы можете использовать AES; посмотрите System.Security.Cryptography.RijndaelManaged
.
Самый простой способ - не шифровать его! Просто используйте идентификатор файла cookie (плюс соль) для поиска значений (содержимого) на сервере.
Самый безопасный способ сделать это - использовать состояние сеанса ASP.Net вместо файлов cookie. Поскольку состояние сеанса никогда не отправляется клиенту, вам не о чем беспокоиться.