あなたがantiforgeryトークンをシリアル化するために使用されているProtect
方法でしょうMachineKey45CryptoSystem
クラスのぞく:あなたがより深く行くとき
public string Protect(byte[] data)
{
return HttpServerUtility.UrlTokenEncode(MachineKey.Protect(data, MachineKey45CryptoSystem._purposes));
}
、あなたがHttpEncoder
方法を見つけるだろうし。
インサイド
internal string UrlTokenEncode(byte[] input) {
....
}
をその体:
base64Str = Convert.ToBase64String(input);
要約するとD
// Step 3: Copy in the other chars. Transform the "+" to "-", and "/" to "_"
for (int iter = 0; iter < endPos; iter++) {
char c = base64Str[iter];
switch (c) {
case '+':
base64Chars[iter] = '-';
break;
case '/':
base64Chars[iter] = '_';
break;
case '=':
Debug.Assert(false);
base64Chars[iter] = c;
break;
default:
base64Chars[iter] = c;
break;
}
}
- 有効な文字は以下のとおりです。文字、数字、-
と_
。
お返事ありがとうございます。トークンに '!'、 '〜'、 '*'、 '#'のような文字が存在しないことをどうやって保証できますか?これはisコードでは処理されていないためです。 –
Convert.ToBase64Stringはそれを保証します。 64基本符号化文字列の仕様を参照してください。 – pwas