formsauthentication.setauthcookieを使用して、暗号化された文字列を保存します

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

  •  25-10-2019
  •  | 
  •  

質問

私は言うことから始めます、多分これはやり過ぎです。

ログインルーチン中に、formsauthentication.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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top