5

ユーザーをUmbracoから別のCMSに移動する必要があり、すべてのパスワードがハッシュ化されます。ユーザーがパスワードをリセットできないようにし、同じハッシュアルゴリズムを新しいCMSに実装したいと思います。

Umbracoはメンバーシッププロバイダーでどのハッシュタイプを使用していますか?

例えば

「W477AMlLwwJQeAGlPZKiEILr8TA=」は「テスト」のハッシュです

.netを使用できないため、このハッシュをjavascriptで再実装する必要があります。

回答で更新:

//not sure why I can't use cryptojs's utf16LE function
//words = CryptoJS.enc.Utf16LE.parse("test");
//utf16 = CryptoJS.enc.Utf16LE.stringify("test");

function str2rstr_utf16le(input) {
  var output = [],
      i = 0,
      l = input.length;

  for (; l > i; ++i) {
    output[i] = String.fromCharCode(
      input.charCodeAt(i)        & 0xFF,
      (input.charCodeAt(i) >>> 8) & 0xFF
    );
  }

  return output.join('');
}

var pwd = str2rstr_utf16le("test");
var hash = CryptoJS.HmacSHA1(pwd, pwd);

var encodedPassword = CryptoJS.enc.Base64.stringify(hash);
alert(encodedPassword);
4

3 に答える 3

5

具体的には、この特定のクラスを使用してパスワードをハッシュします。これは、簡単な実装例として役立つはずです。

ただし、Martijnが指摘したように、Umbracoは標準のプロバイダーモデルを使用しています。そのため、抽象クラスを介して簡単にアクセスすることも、メンバーシッププロバイダーの独自の実装を作成することもできます。

于 2013-01-10T23:06:09.200 に答える
3

UmbracoはASP.NETメンバーシッププロバイダーモデルを使用しています。つまり、ASP.NETですぐに使用できるすべての抽象クラスがUmbracoメンバーにアクセスできます。ASP.NETメンバーシッププロバイダーの詳細については、このリンクを確認してください。

于 2013-01-10T08:21:42.660 に答える
0

C#で実行する場合は、次のハッシュ方法を使用できます。

public static string GetHash(string password) { 
    byte[] passwordBytes = Encoding.Unicode.GetBytes(password);
    using (var hash = new HMACSHA1(passwordBytes)){ 
       return Convert.ToBase64String(hash.ComputeHash(passwordBytes)); 
    }
}
于 2017-09-12T15:15:54.420 に答える