gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:52:07 25 4
gpt4 key购买 nike

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

我提出的解决方案是创建一个对象的哈希代码,以便可以在移动应用程序和 Web 服务之间轻松进行比较。

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

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

最佳答案

如果您想对对象使用内置的哈希代码方法,则需要重写两侧的哈希函数。

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

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

. Furthermore, the .NET Framework does not guarantee the default implementation of the GetHashCode method, and the value this method returns may differ between .NET Framework versions and platforms, such as 32-bit and 64-bit platforms.

Java hashCode有类似的要求(我的亮点):

Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.

关于java - 用于比较 Java 和 C# 之间具有相同结构的对象的哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com