好吧,我想哈希一个密码,我看看ASP.net Identity在Microsoft.AspNet.Identity.Crypto
Class 中是怎么做的,我来了这个函数(用于比较2个密码Hashes):
[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属性的优点是什么,为什么它应该存在(如果我删除它会发生什么)?对我来说,它看起来像是一个默认的Equals()实现,直到for
-loop.
我试着看一下IL,但这对我来说都是胡说八道:/