我首先要说,也许这有点矫枉过正。
在我的登录例程中,我在使用 FormsAuthentication.SetAuthCookie 之前加密了用户的登录 ID。
问题是,如果加密的字符串最终包含转义字符,则保存的字符串会被截断以处理转义字符。
我应该放弃尝试加密用户的登录 ID 吗?
或者,有没有办法解决这个问题?
这是一个被截断的示例字符串:<< *€ƒKõ‹¯Þ\0ý´Gv\"þEaÔs0n×\tD¦™s€7Œ>>
我首先要说,也许这有点矫枉过正。
在我的登录例程中,我在使用 FormsAuthentication.SetAuthCookie 之前加密了用户的登录 ID。
问题是,如果加密的字符串最终包含转义字符,则保存的字符串会被截断以处理转义字符。
我应该放弃尝试加密用户的登录 ID 吗?
或者,有没有办法解决这个问题?
这是一个被截断的示例字符串:<< *€ƒKõ‹¯Þ\0ý´Gv\"þEaÔs0n×\tD¦™s€7Œ>>
加密用户 id 时,应使用Base64 编码,以便加密数据仅包含有效字符(字母数字、+、/、=)。
您可能会发现这很有帮助:Convert.ToBase64String(byte[])
例子:
string userId = "Hello";
byte[] encryptedData = GetEncryptedBytes(userId);
string encodedUserId = Convert.ToBase64String(encryptedData);
// encodedUserId is "SGVsbG8="
FormsAuthentication.SetAuthCookie(encryptedUserId);
解码是相反的:
string encodedUserId = "SGVsbG8=";
byte[] encryptedData = Convert.FromBase64String(encodedUserId);
string userId = GetDecryptedString(encryptedData);