加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

.Net中的PHP crypt()函数?

发布时间:2020-12-13 17:52:32 所属栏目:PHP教程 来源:网络整理
导读:我正在重写ASP.NET MVC中的 PHP网站.我想保持相同的用户群,但使用PHP crypt()函数对密码进行哈希处理.我需要.Net中的相同功能,以便我可以在登录时散列密码并根据用户数据库中的散列密码进行检查. 在这种情况下,crypt使用CRYPT_MD5实现 – 哈希都以$1 $开头
我正在重写ASP.NET MVC中的 PHP网站.我想保持相同的用户群,但使用PHP crypt()函数对密码进行哈希处理.我需要.Net中的相同功能,以便我可以在登录时散列密码并根据用户数据库中的散列密码进行检查.

在这种情况下,crypt使用CRYPT_MD5实现 – 哈希都以$1 $开头

我尝试了Phalanger,但它没有crypt功能的MD5实现.

有没有人知道.Net中的一个? CodeProject上的crypt()的C#示例使用DES,而不是MD5.

我在C#中尝试了以下代码,使用盐密码,密码盐和盐的不同排列,包含和不包含$1 $前缀和$suffix. None给出与PHP相同的结果:

static void Main(string[] args)
{
    const string salt = "somesalt";
    const string password = "fubar";
    const string plaintextString = password + salt;
    byte[] plaintext = GetBytes(plaintextString);
    var md5 = MD5.Create("MD5");
    byte[] hash = md5.ComputeHash(plaintext);
    string s = System.Convert.ToBase64String(hash);
    Console.WriteLine("Hash of " + password + " is " + s);
    Console.ReadKey();
}

private static byte[] GetBytes(string s)
{
    var result = new byte[s.Length];
    for (int i = 0; i < s.Length; i++)
        result[i] = (byte)s[i];
    return result;
}
有一些用于md5散列的.NET方法,System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(密码,格式)是最容易使用的,即使它是满口的.只需将“md5”作为格式传递即可.

取决于PHP如何执行此操作,可能就像导入它时在哈希开头删除$1 $一样简单.它可能更复杂.如果您可以发布一个示例密码/哈希,我会看看是否可以提出一些C#,为您生成相同的哈希密码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读