2

最初に言っておきますが、これはやり過ぎかもしれません。

ログイン ルーチン中に、FormsAuthentication.SetAuthCookie を使用する前に、ユーザーのログイン ID を暗号化します。

問題は、暗号化された文字列にエスケープ文字が含まれる場合、保存される文字列が切り捨てられてエスケープ文字になることです。

ユーザーのログイン ID を暗号化しようとするのをやめるべきですか?

または、この問題を回避する方法はありますか?

以下は切り捨てられるサンプル文字列です: << *€ƒKõ‹¯Þ\0ý´Gv\"þEaÔs0n×\tD¦™s€7Œ>>

4

1 に答える 1

2

ユーザー 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);
于 2011-11-29T19:16:01.057 に答える