使用formauthentication.setauthcookie存储一个加密的字符串
-
25-10-2019 - |
题
我首先要说,也许这太过杀了。
在我的登录例程中,我在使用formauthentication.setauthcookie之前对用户的登录ID进行加密。
问题在于,如果加密的字符串最终具有逃生字符,那么保存的字符串就会被截断为逃脱字符。
我应该只是试图加密用户的登录ID吗?
或者,有没有办法解决这个问题?
这是一个被截断的示例字符串:<< *€ƒk(
解决方案
加密用户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);
不隶属于 StackOverflow