Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C验证magento数据库中的哈希#_C#_Magento_Encryption_Hash - Fatal编程技术网

C# 如何使用C验证magento数据库中的哈希#

C# 如何使用C验证magento数据库中的哈希#,c#,magento,encryption,hash,C#,Magento,Encryption,Hash,我有一个包含从magento数据库导入的客户的数据库,我想知道是否可以使用我已有的哈希,或者唯一的方法是要求所有客户更改他们的密码 我的应用程序使用C#我尝试过使用MD5,但结果不一样 密码:741963 Magento散列:c8cb61663ba8b4adadc16687d5e2a636:W0 C#简单MD5:CDE8E3E58AB6E2D16CBE1A0EE19FE3A3 我读过Magento用的是盐腌土豆条,盐在冒号后面,但我不知道怎么用 如果有人知道如何解决这个问题 谢谢 如您所见,在M

我有一个包含从magento数据库导入的客户的数据库,我想知道是否可以使用我已有的哈希,或者唯一的方法是要求所有客户更改他们的密码

我的应用程序使用C#我尝试过使用MD5,但结果不一样

密码:741963 Magento散列:c8cb61663ba8b4adadc16687d5e2a636:W0 C#简单MD5:CDE8E3E58AB6E2D16CBE1A0EE19FE3A3

我读过Magento用的是盐腌土豆条,盐在冒号后面,但我不知道怎么用

如果有人知道如何解决这个问题


谢谢

如您所见,在
Magento
散列中有一个冒号。结肠后的
W0
是盐。密码哈希算法是

hash(salt + password)

如果您尝试计算
W0741963
的MD5,您将得到正确的哈希值
C8CB61663BA8B4ADADDC16687D5E2A636

以magento方式存储密码。

Magento未使用md5哈希存储密码

它使用的是盐渍md5.:)

让我解释一下,在md5调用用户键入的密码之前,Salt字符串将连接到密码,然后对其进行加密

  • 例如,如果用户键入密码123456,它将连接到随机生成的salt字符串,这里假设我们的salt字符串是salt\u rdom\u val

  • 这两个值将像这样连接起来123456salted\u rdom\u val

  • 现在,它们将转到md5()函数。这将生成类似654d2ea4a4dd03bc728b8933c61be75d的内容

  • 生成md5之后, MD5将与随机盐结合在一起,中间强度<>强>。 像这样

    2c433dcfc6e3dd9973195bac308482e3:盐腌

  • 因此,现在表(customer\u entity\u varchar)将具有此值

  • 以magento方式对客户进行身份验证

    Magento身份验证将在以下步骤中完成

  • 假设电子邮件可用性检查已经完成,只是检查用户是否在magento站点注册

  • 首先,他们将收到来自客户表单的密码。让我们假设纯文本为“密码”

  • 现在,我们将使用客户提供的电子邮件id获得客户的确切密码

  • 例如

    $orig_pass = 2c433dcfc6e3dd9973195bac308482e3:salted_rdom_val;
    
  • Magento将使用“:”参数分解此字符串。“分解”将使这两个部分存储为一个数组 现在我们在分解数组中有两个值

    $exploded[0]= 2c433dcfc6e3dd9973195bac308482e3;
    
    $exploded[1] = salted_rdom_val;
    
  • 下面是身份验证部分,Magento将把$exploded[1]与密码纯文本(即“password”)连接起来

    $variable=$password.$exploded[1]

    $variable=密码salted\u rdom\u val

  • 它将进行哈希运算

    md5($variable);
    
    md5(passwordsalted_rdom_va);
    
    The output of md5() is 2b339a6b211bc1436cd1e45e2db7f8d6. 
    
  • 现在,magento将检查两个哈希,如果哈希相同,将创建会话 否则,您将收到一条错误消息“请检查您的电子邮件id和密码。”


    这就是magento验证客户密码的方式,您可以调用一些csharp包装器来实现同样的验证

    你想删除salt并将md5解密为纯文本吗?我认为你的方法是错误的。应该在密码前面加盐,而不是后面加盐。你有机会检查过吗?我检查过了它和它的盐+密码,就像哈姆雷特说的