我正忙着将c ++应用移植到c#。 该应用程序包含将数据散列为256位整数的代码。
uint256 res = data->GetHash();
GetHash函数如下所示:
uint256 hash;
SHA256((unsigned char*)&data, sizeof(data), (unsigned char*)&hash);
return hash;
在c#中,我使用BigMath库,但获得了与c ++应用程序不同的值。 我的c#代码如下所示:
SHA256Managed sha256 = new SHA256Managed();
byte[] bytes = GetByteArray(data);
Int256 hash256 = BigMath.Utils.ExtendedBitConverter.ToInt256(sha256.ComputeHash(bytes), 0, true);
c ++应用程序'uint256
类型使用8 x 32位整数,而我看到c#BigMath库使用4 x 64位整数。
这不应该导致问题吗?当然两者的输出应该是一样的吗? 我期望sha256和256bit int标准在各种语言中都是一样的吗?