2012-02-01 10 views
1

ASP.NET Webサイトで使用するために、OracleサーバーからSQL Serverに機密データを取得する必要があります。そのパスワードを言うことができます。私たちのセキュリティ担当者は、これらのパスワードはすべてのステップで保護される必要があると言います。私のウェブサイトでは、ユーザー入力をこれらのパスワードと比較できる必要があります。これらのパスワードは夜間にOracleサーバーからSQL Serverに転送する必要があり、その日のSQL Serverでのみ使用できます。Oracle、SQL Server、およびASP.NETの間でハッシングを実装する方法

最高の解決策は、私がOracle上でパスワードをハッシュし、ハッシュをSQL Serverに渡す必要があるということです。(これは私の仕事ではないので、両者の間の接続は安全です。次に、私のASP.NET Webアプリケーションは、入力ハッシュとデータベースハッシュを比較できるように、ユーザー入力に対して正確に同じハッシュを実装できる必要があります。

私の質問は、Oracleと.NETで同じアルゴリズム/キー/ソルトを使用して何かをハッシュできますか?私は.NETのハッシュ関数を使用する方法を知っていますが、私はオラクルでこれと同等のものを使うことができないのでしょうか?ASP.NETからSQL Serverにプレーンテキストでそれらを渡し、それは簡単ですが、 "プランB"と呼ぶことができます。

+0

データベースは、ハッシュアルゴリズムを気にする必要がありますなぜ?データベースは、ハッシュされる未処理のデータを受け取ることすらありません。あなたのアプリケーションはそれを世話する必要があります。 – vcsjones

+0

@vcsjones - 良い質問です。パスワードは、異なるソースからOracleに取り込まれています。私のアプリケーションはソースを見たことがないので、最初にそれらをハッシュすることはできません。 – jrizzo

+0

md5がうまくいく場合は、私の答え[here] [1]を参照してください。 [1]:私は「http://stackoverflow.com/questions/8810471/get-hash-values-from-sql-server-and-oracle-and-compare-them/8835412#8835412 – tbone

答えて

4

データストアにはハッシュ値が格納されている必要があります。asp.net側では、文字列をハッシュに変換するmd5関数を実装し、次にdbのハッシュ値と比較する必要があります。

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

OracleはあなたがASP.netだけでなく、SQLサーバーに渡すと実装することができますMD5ハッシュを、使用する能力を持っています。

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(); 
} 
+1

MD5はやや壊れており、毎日もっと壊れているようだ。 SHA-256は実際にこの種の目的に使用される標準的なハッシング・アルゴリズムですが、Oracleはこれを現在サポートしていないようです。しかし、彼らはSHA-1をサポートしています。これはMD5よりはるかに優れています。 – jeffsix

+0

その情報をありがとう、SHA-1を見て、あなたのTripleDESの感想は何ですか?ここでは、解読できる必要があるいくつかのアプリケーションで使用します。 –

+0

TripleDESは暗号化アルゴリズムであり、ハッシュアルゴリズムではありません。パスワードを扱うときは、暗号化された形式のパスワードではなく(何かを解読できるので)常にパスワードのハッシュを使用することがベストプラクティスです。ここでは、提出されたパスワードが保存されたパスワードと一致するかどうかだけを気にするので、実際にパスワードが何であるかではないので、ハッシュが優先されます。 – jeffsix

関連する問題