Hash umbraco在其成员资格提供程序中使用什么样的哈希
我需要将Umbraco的用户转移到另一个CMS,他们的所有密码都会被散列。我想防止用户重置密码,并希望在新的CMS中实现相同的哈希算法 Umbraco在其成员资格提供程序中使用什么散列类型 比如说 w477amllwjqealgpzkieilr8ta=“是“test”的哈希值” 我无法使用.net,将不得不在javascript中重新实现此哈希 更新后的答复:Hash umbraco在其成员资格提供程序中使用什么样的哈希,hash,umbraco,Hash,Umbraco,我需要将Umbraco的用户转移到另一个CMS,他们的所有密码都会被散列。我想防止用户重置密码,并希望在新的CMS中实现相同的哈希算法 Umbraco在其成员资格提供程序中使用什么散列类型 比如说 w477amllwjqealgpzkieilr8ta=“是“test”的哈希值” 我无法使用.net,将不得不在javascript中重新实现此哈希 更新后的答复: //not sure why I can't use cryptojs's utf16LE function //words = Cry
//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);
Umbraco正在使用ASP.NET成员资格提供程序模型,这意味着ASP.NET提供的所有现成抽象类都能够访问Umbraco成员。
查看有关ASP.NET成员资格提供程序的详细信息。更具体地说,它用于散列密码。应该作为一个简单的实现示例 不过,正如Martijn所指出的,Umbraco使用标准提供商模型。因此,您可以通过抽象类轻松访问它,和创建自己的成员资格提供程序实现。如果您想在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));
}
}
根据asp.net成员资格提供程序文档,默认情况下它是一个带有base64编码的sha1哈希,但这不会产生上述结果。有一个默认的salt值吗?不幸的是,我必须创建一个javascript实现,所以我不能扩展或使用.net类。我尝试了一个带有空白键的默认hmacsha1,但似乎没有重现相同的结果。啊哈,很好的旧javascript实现。我猜..手机?:)不管怎样,我知道我在过去的某个时候遇到过这个问题。问题是您正在使用的库所使用的编码(我假设是crypto.js)。这条线索应该很有启发性。你真的救了我一天,谢谢分享。