在 PHP 中对从 .NET 加密的 SHA512 密码进行身份验证

用户3242224

我一直在尝试从 PHP API 验证在 .NET 中加密的密码,尽管尝试了不同的方法,但我似乎无法让它匹配。

密码使用 SHA512 加密并存储在数据库中的二进制 (64) 字段中,使用这个确切的函数(我无法控制,无法修改。未使用盐):

> public byte[] GetHashablePw(string pwByte)
>     {
>         System.Security.Cryptography.SHA512Managed sm = new System.Security.Cryptography.SHA512Managed();
>         System.Text.UnicodeEncoding u = new System.Text.UnicodeEncoding();
>         byte[] b = new byte[-1 + 1];
>         b = sm.ComputeHash(u.GetBytes(pwByte));
>         return b;
>     }

当我想比较用户提供的密码时,我尝试了以下不同的方法:

    $pwhash = openssl_digest($_POST['pw'], 'sha512');
    $pwhash = bin2hex(pack('H*', hash('SHA512',$_POST['pw'])));
    $pwhash = openssl_digest(utf8_decode($_POST['pw']), 'sha512');
    $pwhash = bin2hex(hash('sha512', $_POST['pw'], true));

它们都返回相同的结果,但没有一个与从 .NET 存储在数据库中的内容相匹配。

我通过以下方式将密码哈希存储在数据库中:

bin2hex($pwFromDB);

在一种特殊情况下,我将其作为存储在数据库中的哈希得到:

4c0dc75a062dd4957f6f91350f6d3f54f910989e6ffe82749cdc580b9eae5dce0ee743cd513d005d0c399e23b0190809767fe1a57f9fecbce0a928296181c14e

虽然我使用相同的密码从 PHP 函数中得到了这个:

c3cf6055cbb36e3eace5ca470922de6e754ec93cf80f35459c910f4381899483e2c29565f062476724dad94929527d53eeae5a1cd708c6227574e58748d354aa

我将不胜感激任何帮助理解我所缺少的东西。

巴顿杰斯

C# 使用的UnicodeEncoding是 UTF-16LE。

您需要将 PHP 数据转换为相同的表示形式,因为密码学操作的是字节,而不是文本。http://php.net/manual/en/function.mb-convert-encoding.php可能是你想要的。


此外,该字符串未加密。加密需要有一个撤销操作(解密)。这里所做的是散列。这个密码是散列的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript在sha512中加密并获得原始二进制数据(如PHP hash())的结果

来自分类Dev

验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

来自分类Dev

验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

来自分类Dev

python中的sha512哈希不等于php中的sha512哈希

来自分类Dev

在 C# 中验证 SHA512 哈希密码

来自分类Dev

python中的hash_hmac sha512身份验证

来自分类Dev

用于Android密码登录的类似sha512的php

来自分类Dev

如何通过Php解密SHA512密码?

来自分类Dev

使用sha512进行安全的PHP注册失败

来自分类Dev

POST SHA512加密的字符串作为HTTP标头(在C#中)

来自分类Dev

身份验证密码中的变量保持加密状态

来自分类Dev

C中的sha512哈希结果与其他语言(php,python)不同

来自分类Dev

仅使用密码中的 3 个随机字符进行 PHP AD 身份验证

来自分类Dev

SHA512在C#哈希验证中未返回相等值

来自分类Dev

如何在iOS 1中使用WSSE与盐腌sha512进行多次迭代

来自分类Dev

PHP Sha512哈希是否足够?

来自分类Dev

SHA512散列MYSQL / PHP

来自分类Dev

使用SHA512加密字符串

来自分类Dev

获取“ sha512”加密文本的实际文本

来自分类Dev

使用SHA512加密字符串

来自分类Dev

获取“ sha512”加密文本的实际文本

来自分类Dev

验证SHA512密码if($ row ['password'] == hash('SHA512',$ upass))

来自分类Dev

加密/解密用于Django中基本身份验证的用户密码

来自分类Dev

相当于Node.js(Angular2,Ionic2)中的PHP哈希('sha512',$ x)

来自分类Dev

如何使用Windows身份验证将值与ASP.NET Core中的Windows帐户密码进行比较?

来自分类Dev

对加密的密码使用身份验证

来自分类Dev

是否可以强行使用我的Sha512身份验证算法?

来自分类Dev

在PHP中使用SHA512正确使用crypt()

来自分类Dev

PHP中密码加密的基本错误

Related 相关文章

  1. 1

    JavaScript在sha512中加密并获得原始二进制数据(如PHP hash())的结果

  2. 2

    验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

  3. 3

    验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

  4. 4

    python中的sha512哈希不等于php中的sha512哈希

  5. 5

    在 C# 中验证 SHA512 哈希密码

  6. 6

    python中的hash_hmac sha512身份验证

  7. 7

    用于Android密码登录的类似sha512的php

  8. 8

    如何通过Php解密SHA512密码?

  9. 9

    使用sha512进行安全的PHP注册失败

  10. 10

    POST SHA512加密的字符串作为HTTP标头(在C#中)

  11. 11

    身份验证密码中的变量保持加密状态

  12. 12

    C中的sha512哈希结果与其他语言(php,python)不同

  13. 13

    仅使用密码中的 3 个随机字符进行 PHP AD 身份验证

  14. 14

    SHA512在C#哈希验证中未返回相等值

  15. 15

    如何在iOS 1中使用WSSE与盐腌sha512进行多次迭代

  16. 16

    PHP Sha512哈希是否足够?

  17. 17

    SHA512散列MYSQL / PHP

  18. 18

    使用SHA512加密字符串

  19. 19

    获取“ sha512”加密文本的实际文本

  20. 20

    使用SHA512加密字符串

  21. 21

    获取“ sha512”加密文本的实际文本

  22. 22

    验证SHA512密码if($ row ['password'] == hash('SHA512',$ upass))

  23. 23

    加密/解密用于Django中基本身份验证的用户密码

  24. 24

    相当于Node.js(Angular2,Ionic2)中的PHP哈希('sha512',$ x)

  25. 25

    如何使用Windows身份验证将值与ASP.NET Core中的Windows帐户密码进行比较?

  26. 26

    对加密的密码使用身份验证

  27. 27

    是否可以强行使用我的Sha512身份验证算法?

  28. 28

    在PHP中使用SHA512正确使用crypt()

  29. 29

    PHP中密码加密的基本错误

热门标签

归档