如何解决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 举报,一经查实,本站将立刻删除。