为什么我的PHP SHA256哈希值不等于C#SHA256管理哈希

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了为什么我的PHP SHA256哈希值不等于C#SHA256管理哈希脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么这些不一样?

PHP

$hash = hash('sha256',$userData['salt'] . hash('sha256',$password) );

C#

public static string ComputeHash(string plainText,string salt)
    {
        // Convert plain text into a byte array.
        byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
        byte[] saltBytes = Encoding.UTF8.GetBytes(salt);

        SHA256Managed hash = new SHA256Managed();

        // Compute hash value of salt.
        byte[] plainHash = hash.COMputeHash(plainTextBytes);

        byte[] concat = new byte[plainHash.Length + saltBytes.Length];

        System.Buffer.BlockCopy(saltBytes,concat,saltBytes.Length);
        System.Buffer.BlockCopy(plainHash,saltBytes.Length,plainHash.Length);

        byte[] tHashBytes = hash.ComputeHash(concat);

        // Convert result into a base64-encoded string.
        string hashValue = Convert.ToBase64String(tHashBytes);

        // Return the result.
        return hashValue;
    }
C#正在输出一个base64生态编码的字符串,PHP正在输出十六进制数.更好的比较可能是将参数true传递给PHP和base64的hash函数的结尾:
$hash = base64_encode(
           hash('sha256',$password),true )
         );

脚本宝典总结

以上是脚本宝典为你收集整理的为什么我的PHP SHA256哈希值不等于C#SHA256管理哈希全部内容,希望文章能够帮你解决为什么我的PHP SHA256哈希值不等于C#SHA256管理哈希所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。