微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NSData Sha512 散列与 Xamarin

如何解决NSData Sha512 散列与 Xamarin

我有两个 NSData 对象的 SHA512 哈希示例(Objective-C) Objective C SHA512 hash of two NSData 这是在目标 C 中,使用 CommonCrypto,但是我尝试使用 SHA512Managed 类做同样的事情,但无法获得相同的结果。

PS:我希望能够散列 2 个 NSData 对象而不是字符串。

有没有什么办法可以用C#来做到这一点?

对于 Xamarin.iOS,CC_SHA512_Update 和 CC_SHA512_Final 的等价物是什么?

解决方法

您可以使用字符串创建 NSData

        SHA512 shaM = new SHA512Managed();
        byte[] data = shaM.ComputeHash(Encoding.UTF8.GetBytes(""));

        StringBuilder sBuilder = new StringBuilder();

        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        string stringyHash = sBuilder.ToString();

        NSData dataStr = NSData.FromString(stringyHash,NSStringEncoding.UTF8);
,

我想,我找到了答案: 重现与我的问题中提到的本机代码相同的输出 我会使用以下方法:

   public NSData SHA512HashWithSalt(NSData contentData,NSData saltData)
    {
        HashAlgorithm algorithm = new SHA256Managed();

        //Convert NSData to array of bytes
        byte[] salt = saltData.ToArray();
        byte[] content = contentData.ToArray();

        byte[] plainTextWithSaltBytes =
          new byte[content.Length + salt.Length];

        for (int i = 0; i < content.Length; i++)
        {
            plainTextWithSaltBytes[i] = content[i];
        }
        for (int i = 0; i < salt.Length; i++)
        {
            plainTextWithSaltBytes[content.Length + i] = salt[i];
        }

        return NSData.FromArray(algorithm.ComputeHash(plainTextWithSaltBytes));
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。