这取决于您希望散列具有什么属性。例如,您 可以 编写如下内容:
public int HashString(string text){ // TODO: Determine nullity policy. unchecked { int hash = 23; foreach (char c in text) { hash = hash * 31 + c; } return hash; }}
只要您 证明
那是哈希的计算方式,那是有效的。它绝对不是加密安全或类似的东西,但是您可以毫无问题地坚持下去。在序数意义上绝对相等的两个字符串(即未应用文化平等等,一个字符一个字符地相同)将使用此代码产生相同的哈希。
当您依赖于 未记录的
散列时,问题就来了,即,遵守
GetHashCode()但绝对不能保证版本之间保持不变的某些事物
string.GetHashCode()。
像这样编写和记录自己的哈希值有点像说:“此敏感信息已用MD5(或其他任何东西)进行哈希处理”。只要是定义明确的哈希,就可以了。
编辑:其他答案建议使用加密散列,例如SHA-1或MD5。我要说的是,除非我们知道对密码安全性的要求而不是对稳定性的要求,否则要经历将字符串转换为字节数组并对其进行哈希处理的繁琐过程是没有意义的。当然,如果哈希
是 指用于任何与安全有关的,行业标准的哈希 正是 你应该达到什么样的。但这并没有在问题中提到。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)