3

サーバー側で実行されているC#のアルゴリズムがあり、base64でエンコードされた文字列をハッシュします。

byte[] salt = Convert.FromBase64String(serverSalt); // Step 1
SHA256Managed sha256 = new SHA256Managed(); // Step 2
byte[] hash = sha256.ComputeHash(salt); // Step 3
Echo("String b64: " + Convert.ToBase64String(hash)); // Step 4

次に、ハッシュはハッシュのデータベースリストと照合されます。C#からWebSocketを介して送信されるserverSaltを使用して、javascriptでも同じことを実現したいと思います。

C#とJavascriptの文字列エンコーディングが異なるため、SHA-256ハッシュはC#とJavascriptで異なることを知っています。しかし、バイト配列にゼロを埋め込んで、JavascriptをC#として動作させることができることはわかっています(上記の手順1は解決されています)。

var newSalt  = getByteArrayFromCSharpString(salt); // Pad zeros where needed
function getByteArrayFromCSharpString(inString)
{
  var bytes = [];
  for (var i = 0; i < inString.length; ++i)
{
    bytes.push(inString.charCodeAt(i));
    bytes.push(0);
}
return bytes;
}

ステップ2、3、4を再現するために使用できるアルゴリズムについて誰かが洞察を提供できますか?

PS:すでに質問と回答がありますが、単一のコードスニペットはありません。

4

2 に答える 2

6

これが解決策です、私はこれが同じ状況で他の人々を助けることができることを本当に望んでいます。

htmlファイルで、crypto-jsライブラリをロードします

<!-- library for doing password hashing, base64 eoncoding / decoding -->
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/core-min.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/sha256.js"></script>

JavaScriptで、次の手順を実行します

// This function takes a base64 string, hashes it with the SHA256 algorithm
// and returns a base64 string. 
function hashBase64StringAndReturnBase64String(str)
{
    // Take the base64 string and parse it into a javascript variable
    var words  = CryptoJS.enc.Base64.parse(str);
    // Create the hash using the CryptoJS implementation of the SHA256 algorithm
    var hash = CryptoJS.SHA256(words);
    var outString =  hash.toString(CryptoJS.enc.Base64)
    // Display what you just got and return it
    console.log("Output string is: " + outString);
    return outString;
}
于 2012-12-12T10:19:31.083 に答える
0

次のURLでJavaスクリプトSHA256の実装を確認して くださいhttp://www.movable-type.co.uk/scripts/sha256.html

于 2012-12-11T13:08:21.910 に答える