Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于比较Java和C之间具有相同结构的对象的哈希代码#_Java_C#_Android_Object_Data Integrity - Fatal编程技术网

用于比较Java和C之间具有相同结构的对象的哈希代码#

用于比较Java和C之间具有相同结构的对象的哈希代码#,java,c#,android,object,data-integrity,Java,C#,Android,Object,Data Integrity,我正在开发一个移动应用程序(用Java实现),它用一个web服务(用C#实现)同步数据。我想检查从服务器接收(并保存到数据库)的对象与存储在服务器上的对象相比是否具有正确的数据 我提出的解决方案是创建一个对象的哈希代码,该代码可以很容易地在移动应用程序和web服务之间进行比较 我正在考虑(在服务器端或移动应用程序中)使用nativehashCode()方法,然后尝试用第二语言中的一种语言重新实现它的工作方式。这是可能的,还是我必须重写两种语言中的hashCode()方法,以便它提供相同的哈希代码

我正在开发一个移动应用程序(用Java实现),它用一个web服务(用C#实现)同步数据。我想检查从服务器接收(并保存到数据库)的对象与存储在服务器上的对象相比是否具有正确的数据

我提出的解决方案是创建一个对象的哈希代码,该代码可以很容易地在移动应用程序和web服务之间进行比较

我正在考虑(在服务器端或移动应用程序中)使用native
hashCode()
方法,然后尝试用第二语言中的一种语言重新实现它的工作方式。这是可能的,还是我必须重写两种语言中的
hashCode()
方法,以便它提供相同的哈希代码?有没有更好的方法来验证数据完整性


对象结构不是很复杂,尽管每个对象都有许多属性。

如果要为对象使用内置的哈希代码方法,则需要覆盖两侧的哈希函数

构建您自己的不依赖哈希代码的助手可能是更干净的解决方案,因为整数哈希代码的冲突率相对较高。像SHA256这样的东西会产生更长的散列

在.Net中(包括用C#编写的代码)被明确定义为不保证在重启、应用程序域和CLR版本之间保持不变:

。此外,.NET Framework不保证GetHashCode方法的默认实现,并且该方法返回的值在.NET Framework版本和平台(例如32位和64位平台)之间可能不同

Java也有类似的要求(我的重点):

在Java应用程序的执行过程中,每当在同一对象上多次调用hashCode方法时,只要没有修改对象上的equals比较中使用的信息,hashCode方法必须始终返回相同的整数。从应用程序的一次执行到同一应用程序的另一次执行,该整数不必保持一致


您可以始终在服务器端使用类似DeepEqual的库来检查对象中每个属性的值

我猜您希望在CPU上保持移动Java应用程序的轻量级。这将防止您在客户端上做任何额外的工作。

Java中的“native”
hashCode()
只返回对象的内存位置。。。