我想比较用OracleMembershipProvider方法创建的哈希:
CreateUser(username, password, e-mail)
在PHP中手动创建哈希。 CreateUser方法在db中保存密码哈希和salt。 我必须补充一点,每个密码的盐值都不同。
我不知道OracleMembershipProvider用于哈希生成的模式。 因为我的.NET应用程序是4.5框架,并且我没有指定散列算法类型 使用sha-1。
我只想获得哈希生成模式,以便我可以比较它并使用相同的数据库进行PHP应用程序登录。
提前谢谢。
答案 0 :(得分:1)
我最终找到了答案:
使用OracleMembershipProvider生成密码与SQLMembershipProvider中的相同。 所以这个问题和这里有相同的答案: What is default hash algorithm that ASP.NET membership uses?这个功能对我来说很合适。
public string EncodePassword(string pass, string salt)
{
byte[] bytes = Encoding.Unicode.GetBytes(pass);
//byte[] src = Encoding.Unicode.GetBytes(salt); Corrected 5/15/2013
byte[] src = Convert.FromBase64String(salt);
byte[] dst = new byte[src.Length + bytes.Length];
Buffer.BlockCopy(src, 0, dst, 0, src.Length);
Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
byte[] inArray = algorithm.ComputeHash(dst);
return Convert.ToBase64String(inArray);
}
编辑: 我所要做的就是将此代码转换为PHP。 我发现了这种转换:Trying to port C# function to PHP5