2017-10-23 7 views

答えて

1

JavaScript: How to generate Rfc2898DeriveBytes like C#?

が、.NETコアには使用V3をハッシュするため^ 1 .NETコアであるため変更する必要があり、そのコードは、に変更する必要があります。

// The value stored in [dbo].[AspNetUsers].[PasswordHash] 
    const hashedPwd = "AQAAAAEAACcQAAAAENX1Hdhgta05DYzYzVOI5kfv1mM0oc2OCIF8tKvNZeSTMWoczGZk+6yy9DMWtLeVQQ=="; 
    const hashedPasswordBytes = new Buffer(hashedPwd, 'base64');   
    const hexChar = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]; 

    let salt_string = ""; 
    let storedSubKeyString = ""; 

    // build strings of octets for the salt and the stored key 
    for (let i = 1; i < hashedPasswordBytes.length; i++) { 
     if (i > 12 && i <= 28) { 

      salt_string += hexChar[(hashedPasswordBytes[i] >> 4) & 0x0f] + hexChar[hashedPasswordBytes[i] & 0x0f] 
     } 
     if (i > 0 && i > 28) { 
      storedSubKeyString += hexChar[(hashedPasswordBytes[i] >> 4) & 0x0f] + hexChar[hashedPasswordBytes[i] & 0x0f]; 
     } 
    } 

    // password provided by the user   
    const password = 'password';  

    var nodeCrypto = crypto.pbkdf2Sync( 
      new Buffer(password), 
      new Buffer(salt_string, 'hex'), 10000, 256, 'SHA256'); 


    var derivedKeyOctets = nodeCrypto.toString('hex').toUpperCase(); 


    if (derivedKeyOctets.indexOf(storedSubKeyString) === 0) { 
     return "passwords match!"; 
    } else { 
     return "passwords DO NOT match!"; 
    } 
+0

これは受け入れられた回答としてマークしてください。誰かが恩恵を受けるかもしれません。 –

0

node-password-hash(ただし、非推奨です)あなたのためのステップ。

ハッシュされたパスワードを生成し、プレーンテキストのパスワードをハッシュパスワードで検証する機能も提供します。追加のセキュリティ手段としての機能に加えて、パスワードがハッシュされるとランダムな塩が生成されます。ハッシュされたパスワードは、saltと同様に使用された暗号アルゴリズムの組み合わせです。プレーンテキストパスワードがハッシュされたパスワードそのものであることを確認するだけです。

希望すると便利です。この記事として

+0

ありがとう、しかし、私libのチェックが必要です.net core hashed password –

関連する問題