私は現在、データベースの行に基づいて入場するためのクレジットカードのスワイプを含むプロジェクトに取り組んでいます。ウィルコールシステムと同様に、CC番号のSHA-256ハッシュは、「適切なピックアップ」と見なされるために、DB行のハッシュと一致する必要があります。
ただし、興行収入はブラウザに基づいているため、ピックアップのCC番号は、Javascriptを使用してクライアント側でハッシュし、以前にダウンロードした通話データと比較する必要があります。
ただし、数値をハッシュしようとすると、ハッシュは常にDB行が作成されたときにハッシュされたものとは異なる結果になります(VB.NETおよびSQL Server 2008 R2を使用)。たとえば、データベースのCC番号がたまたま4444333322211111だった場合、.NETからの結果のハッシュはxU6sVelMEme0N8aEcCKlNl5cG25kl8Mo5pzTowExenM=になります。
ただし、私が見つけたJavascript用のSHA-256ハッシュライブラリを使用すると、結果のハッシュは常にNbjuSagE7lHVQzKSZG096bHtQoMLscYAXyuCXX0Wtw0=になります。
これはある種のUnicode/UTF-8の問題だと思いますが、何を試してもハッシュを同じように出すことができず、夢中になり始めています。誰かアドバイスはありますか?
ここにいくつかの洞察を提供するかもしれない何かがあります。http://www.insidepro.com/hashes.php?lang=engにアクセスし、「パスワード」ボックスに引用符なしで「4444333322221111」を挿入してください。その後、SHA-256セクションまでスクロールダウンします。
結果は4つあり、そのうち2つは私が投稿したハッシュコードです(上から2番目はJavascriptハッシュ、下から2番目はSQLハッシュです)。そのページによると、一番下のハッシュ結果は、base 64文字列を使用して生成され、パスワードをUnicode形式にします。
私はこれを調査し、パスワードをUnicode形式にエンコードするためにさまざまな関数を試しましたが、少し調整したり、他の関数を作成したりしても、必要なハッシュコードに一致させることはできませんでした。
現在、サーバー側でSHA-256関数を呼び出すときに使用されるパラメーターを調査しています。
アップデート:
そのため、気が狂っていないことを確認するために、デバッグ中にイミディエイトウィンドウのCC番号に使用しているハッシュメソッドを実行しました。この場合も、結果は以前と同じままです。ここでスクリーンショットを見ることができます:http://i.imgur.com/raEyX.png