在PHP中创建与OracleMembershipProvider相同的哈希

时间:2013-11-27 13:25:59

标签: c# php .net oracle hash

我想比较用OracleMembershipProvider方法创建的哈希:

CreateUser(username, password, e-mail) 

在PHP中手动创建哈希。 CreateUser方法在db中保存密码哈希和salt。 我必须补充一点,每个密码的盐值都不同。

我不知道OracleMembershipProvider用于哈希生成的模式。 因为我的.NET应用程序是4.5框架,并且我没有指定散列算法类型 使用sha-1。

我只想获得哈希生成模式,以便我可以比较它并使用相同的数据库进行PHP应用程序登录。

提前谢谢。

1 个答案:

答案 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