您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在.net(c#)中为安全存储在数据库中的字符串创建HashCode?

如何在.net(c#)中为安全存储在数据库中的字符串创建HashCode?

这取决于您希望散列具有什么属性。例如,您 可以 编写如下内容

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。我要说的是,除非我们知道对密码安全性的要求而不是对稳定性的要求,否则要经历将字符串转换为字节数组并对其进行哈希处理的繁琐过程是没有意义的。当然,如果哈希 指用于任何与安全有关的,行业标准的哈希 正是 你应该达到什么样的。但这并没有在问题中提到。

c# 2022/1/1 18:13:53 有597人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶