提问时间: 2007-11-30 15:45
悬赏分:100 提问时间2007/11/30 15:45:00 问题为何被关闭 浏览:580 次
参照msdn中membership
在 webconfig中 我配置了
<machineKey
validationKey="AutoGenerate"
decryptionKey="AutoGenerate,IsolateApps"
validation="SHA1"
decryption="Auto"
/>
System.Security.Cryptography.HMACSHA1 hash = new System.Security.Cryptography.HMACSHA1();
hash.Key = HexToByte(machineKey.ValidationKey);
hash.Key = HexToByte(machineKey.ValidationKey);
在这调用HexToByte方法
private byte[] HexToByte(string hexString)
//这里hexString应该是AutoGenerate
{
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] =Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
这里提示不符合要求的 字符,我也查看了ToByte方法,如果字符中大于16进制的f的 时候他就报这个错误(不符合要求的字符)
但是在webconfig中 <machineKey validationKey="AutoGenerate"
validationKey必须是AutoGenerate,
我想既然是msdn中的例子,应该是测试过的,那为什么会出现这样的情况
请 大侠指教
问题补充:validationKey="AutoGenerate"
我也改成别的过,但是系统提示要AutoGenerate,里面的gto等字符已经不允许了
2楼的思路也是我开始这样想的,可是你可以看下msdn中的membership的例子,他用的access,就是测试了不成功还提示那样的错误,就搞定我郁闷。呵呵,加密要耗资源,当然在正式的项目中不可能这么做,现在就自己测试的问题!