umbraco在其会员提供商中使用什么样的散列

时间:2013-01-10 03:52:13

标签: hash umbraco

我需要将用户从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);

3 个答案:

答案 0 :(得分:5)

更具体地说,它使用this particular class来散列密码。 This应该作为一个简单的实现示例。

就像Martijn指出的那样,Umbraco使用标准的提供者模型。因此,您可以通过抽象类轻松访问它,创建您自己的成员资格提供程序实现。

答案 1 :(得分:3)

Umbraco正在使用ASP.NET成员资格提供程序模型,这意味着所有使用ASP.NET提供的抽象类都能够访问Umbraco成员。 有关ASP.NET成员资格提供程序的详细信息,请查看this link

答案 2 :(得分: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)); 
    }
}