【发布时间】:2013-12-08 01:20:59
【问题描述】:
好吧,我想对密码进行哈希处理,我查看了 ASP.net Identity 在Microsoft.AspNet.Identity.Crypto 类中的作用,然后我找到了这个函数(用于比较 2 个密码哈希):
[MethodImpl(MethodImplOptions.NoOptimization)]
private static bool ByteArraysEqual(byte[] a, byte[] b)
{
if (object.ReferenceEquals(a, b))
{
return true;
}
if (((a == null) || (b == null)) || (a.Length != b.Length))
{
return false;
}
bool flag = true;
for (int i = 0; i < a.Length; i++)
{
flag &= a[i] == b[i];
}
return flag;
}
这是反射器输出的直接副本...
现在我的问题是,NoOptimization 属性有什么好处,为什么它应该在那里(如果我删除它会发生什么)?对我来说,在 for-loop 之前,它看起来像是默认的 Equals() 实现。
我试图看一下 IL,但这对我来说都是无稽之谈:/
【问题讨论】:
标签: c# optimization cil