如何在Oracle、SQL Server和ASP.NET之间实现哈希



我需要将一些敏感数据从Oracle服务器获取到SQL server,以便在我的ASP.NET网站中使用。让我们说一下它的密码。我们的安全人员说,这些密码需要在每一步都得到保护。我的网站需要能够将用户输入与这些密码进行比较。这些密码必须在夜间从Oracle服务器传输到SQL server,并且只能在白天在SQL server上使用。

我能想到的最好的解决方案是,我们需要在Oracle上对密码进行散列,并将散列传递给SQL Server(假设两者之间的连接是安全的,因为这不是我的工作:p)。然后,我的ASP.NET web应用程序需要能够对用户输入实现完全相同的哈希,这样我们就可以将输入哈希与数据库哈希进行比较。

因此,我的问题是:如何在Oracle和.NET上使用相同的算法/key/salt对某些内容进行散列?我知道如何使用.NET哈希函数,但我不确定我能在Oracle中使用哪些函数。。。如果更容易的话,我可能会将它们以纯文本形式从ASP.NET传递到SQL Server,并在那里进行散列,但我们称之为"B计划"。

您的数据存储应该存储散列值,在asp.net端,您需要实现一个md5函数来将字符串转换为散列,然后与数据库中的散列值进行比较。

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_obtool.htm#i1003449

Oracle确实有能力使用MD5散列,您可以将其传递给SQL服务器并实现,也可以使用ASP.net

SQL Server md5

http://www.lazerwire.com/2011/10/ms-sql-md5-hash.html

ASP.net MD5

public string CalculateMD5Hash(string input)
{
    // step 1, calculate MD5 hash from input
    MD5 md5 = System.Security.Cryptography.MD5.Create();
    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
    byte[] hash = md5.ComputeHash(inputBytes);
    // step 2, convert byte array to hex string
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < hash.Length; i++)
    {
        sb.Append(hash[i].ToString("X2"));
    }
    return sb.ToString();
}

最新更新