現在、私は、データベース行に基づく入学用のクレジットカードスワイプを含むプロジェクトに取り組んでいます。コール・システムと同様に、CC番号のSHA-256ハッシュは、「適切なピックアップ」とみなされるために、DB行のハッシュと一致しなければなりません。SHA-256ハッシュはC#とJavascriptの間で異なります
しかし、ボックスオフィスシステムはブラウザに基づいているため、ピックアップ時のCC番号はJavascriptを使用してクライアントサイドでハッシュし、以前にダウンロードしたコールデータと比較する必要があります。
ただし、数値をハッシュしようとすると、ハッシュはDB行が作成されたとき(ハッシュ化されたもの)とは異なる結果に終わります(VB.NETとSQL Server 2008 R2を使用)。たとえば、データベースのCC番号がの場合、.NETの結果ハッシュはxU6sVelMEme0N8aEcCKlNl5cG25kl8Mo5pzTowExenM =になります。
私は見つけることができるのJavascriptのための任意のSHA-256ハッシュライブラリを使用している場合しかし、結果のハッシュは常にNbjuSagE7lHVQzKSZG096bHtQoMLscYAXyuCXX0Wtw0 =だろう。
私はこれが何らかのUnicode/UTF-8の問題であると仮定していますが、何を試しても、ハッシュが同じになることはできません。それが私を狂わせてしまいます。誰も助言を提供することはできますか?
ここにいくつかの洞察力を提供するかもしれないものがあります。 http://www.insidepro.com/hashes.php?lang=engにアクセスし、[4444333322221111]を引用符なしで[パスワード]ボックスに挿入してください。その後、SHA-256セクションまでスクロールダウンします。
4つの結果があることがわかります。そのうち2つは、私が投稿したハッシュコードです(上から2番目はJavascriptハッシュ、下の1つはSQLハッシュです)。そのページによれば、下位ハッシュ結果は、基本64文字列を使用して生成され、パスワードをユニコード形式にする。
私はこれを調べて、パスワードをユニコード形式にエンコードするためにさまざまな機能を試しましたが、試したり、他の機能を試しても、必要なハッシュコードと一致することはありませんでした。
現在、サーバー側でSHA-256関数を呼び出すときに使用されるパラメータを調べています。
UPDATE:
は、だから、私はクレイジーではなかったことを確認するために、私は、デバッグ中に、私はすぐにウィンドウ内のCC番号を使用しているハッシュ法を走りました。再び、結果は以前と同じです。ここでのスクリーンショットを見ることができます:http://i.imgur.com/raEyX.png
両側でハッシュをどのように達成したかに関する情報を提供できますか?どのような関数、コードなど... – JaredPar
[Java SHA256はPHP SHA256と異なるハッシュを出力しますか?](http://stackoverflow.com/questions/4680661/java-sha256-outputs-different-hash-to- php-sha256) –
いくつかのコードを表示しますか?私はこのSHA512を使用しています:http://pajhome.org.uk/crypt/md5/sha512.htmlと私は以前このSHA-1を使いました:http://www.movable-type.co.uk/scripts/sha1。 htmlとC#interopの問題はありません。 (関連する質問:なぜsha512を使用しないのですか?) –