Utilizzando FormsAuthentication.SetAuthCookie per memorizzare una stringa criptata

StackOverflow https://stackoverflow.com/questions/8316279

  •  25-10-2019
  •  | 
  •  

Domanda

I Comincerò dicendo, forse questo è eccessivo.

Nel corso della mia routine di login, cifrare id di login dell'utente prima di usare FormsAuthentication.SetAuthCookie.

Il problema è che se le estremità delle stringhe criptate fino caratteri di escape che hanno, la stringa che vengono salvati ottiene troncato fare per i caratteri di escape.

devo solo abondone cercando di crittografare id di login dell'utente?

In alternativa, c'è un modo per aggirare questo problema?

Ecco una stringa di esempio che viene troncato: << * € ƒKõ >

È stato utile?

Soluzione

Quando si crittografa l'ID utente, è necessario utilizzare codifica Base64 in modo che i dati crittografati saranno contenere solo caratteri validi (alfanumerici, + , / , = ).
Si sarebbe probabilmente trovare questo utile: Convert.ToBase64String (byte [])

Esempio:

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

FormsAuthentication.SetAuthCookie(encryptedUserId);

E decodifica è il contrario:

string encodedUserId = "SGVsbG8=";
byte[] encryptedData = Convert.FromBase64String(encodedUserId);
string userId = GetDecryptedString(encryptedData);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top