作者AmosYang (泛用人型编码器)
看板Soft_Job
标题Re: [心得][.NET] GetHashCode()
时间Sun Nov 27 03:11:03 2016
重构了这篇文章,拆开成几个小题目来谈、排版、整理後续讨论,应该在可读性上
有进步。
值得一提的是新加入的这篇文
* C# `System.Valuetype.GetHashCode()` 潜在效能、安全问题
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode-valuetype.html
ValueType 的 `GetHashCode() 预设实作是把所有栏位(field) 大锅炒成
杂凑(hash)值;有看过些说法主张这可能造成潜在的效能问题外,然而,更严
重的 是如其原码注解 所指出的,这多少会在某种程度上把敏感资讯透露出去
,也就是有 **潜在的安全问题** 。
https://github.com/dotnet/coreclr/blob/release/1.1.0/src/vm/comutilnative.cpp#L2770-L2774
// The default implementation of GetHashCode() for all value types.
// Note that this implementation reveals the value of the fields.
// So if the value type contains any sensitive information it should
// implement its own GetHashCode().
FCIMPL1(INT32, ValueTypeHelper::GetHashCode, Object* objUNSAFE)
是故,原码注解主张
若此 value type 含有敏感资讯,那它应该为 GetHashCode() 提供自己
的实作版本。
然而,很遗憾的, System.Valuetype.GetHashCode() 的官方文件
目前(2016-11-25)并没有特别提醒这件事。
更进一步的原始码追踪可参考这篇
* C# `GetHashCode()` 原始码
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode-source-code.html
:)
========================================================================
* 列表:
http://www.30abysses.com/TWY/2016/11/21/index.html
* C# `GetHashCode()`
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode.html
* C# `GetHashCode()` 简单来说就是……
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode-explained.html
* C# `GetHashCode()` 起源、守则、法则
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode-origin-guidelines-rules.html
* C# `GetHashCode()` 讨论
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode-discussion.html
* C# `GetHashCode()` 原始码
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode-source-code.html
* C# `System.Valuetype.GetHashCode()` 潜在效能、安全问题
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode-valuetype.html
* C# `GetHashCode()` 系列文之缘起
http://www.30abysses.com/TWY/2016/11/21/c_sharp-gethashcode.meta.html
--
个人 杂谈、学习、英语、软体
https://www.facebook.com/tw.yang.30 https://www.facebook.com/30abysses/
https://twitter.com/twy30 http://www.30abysses.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 70.181.102.71
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1480187481.A.2C4.html
※ 编辑: AmosYang (70.181.102.71), 11/27/2016 03:12:27
1F:推 james732: 不过有可能从标准实作算出的hash去倒推特定的资料吗? 11/27 14:22