我是ASP.NET MVC的新手。我想知道ASP.NET MVC中是否有一组唯一的有效字符用于加密的AntiForgeryToken。我需要在阅读时验证密钥。 我在web.config中指定了machineKey。
提前致谢。任何有关令牌验证的建议都将受到赞赏。
答案 0 :(得分:4)
当您查看课程MachineKey45CryptoSystem
时,您将找到用于序列化防伪令牌的Protect
方法:
public string Protect(byte[] data)
{
return HttpServerUtility.UrlTokenEncode(MachineKey.Protect(data, MachineKey45CryptoSystem._purposes));
}
当你走得更深时,你会在HttpEncoder
中找到方法:
internal string UrlTokenEncode(byte[] input) {
....
}
在它的身体里面:
base64Str = Convert.ToBase64String(input);
和
// 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;
}
}
总结 - 有效字符包括:字母,数字,-
和_
。