Pregunta

Comenzaré diciendo, tal vez esto sea excesivo.

Durante mi rutina de inicio de sesión, encripto la ID de inicio de sesión del usuario antes de usar FormSauthentication.setAuthcookie.

El problema es que si la cadena encriptada termina con caracteres de escape, la cadena que se guarda se trunca a los caracteres de escape.

¿Debería simplemente abondone tratando de cifrar la ID de inicio de sesión del usuario?

O, ¿hay alguna forma de solucionar este problema?

Aquí hay una cadena de muestra que se trunce: << *€ ƒ 8õ ‹¯Þ 0ý´gv " þeaôs0n × tdiqu ™ s € 7œ >>

¿Fue útil?

Solución

Cuando cifre la ID de usuario, debe usar Base64 Codificación para que los datos cifrados solo contengan caracteres válidos (alfanuméricos, +, /, =).
Probablemente encontrarías esto útil: Convert.Tobase64String (byte [])

Ejemplo:

string userId = "Hello";
byte[] encryptedData = GetEncryptedBytes(userId);
string encodedUserId = Convert.ToBase64String(encryptedData);
// encodedUserId is "SGVsbG8="

FormsAuthentication.SetAuthCookie(encryptedUserId);

Y la decodificación es el reverso:

string encodedUserId = "SGVsbG8=";
byte[] encryptedData = Convert.FromBase64String(encodedUserId);
string userId = GetDecryptedString(encryptedData);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top