-2

如何解密哈希码?和解码一样吗??我怎样才能解密/解码这个代码?有人可以帮助我吗?

enter.setOnClickListener(new OnClickListener() 
    {
    @Override
    public void onClick(View v) 
    {
        // TODO Auto-generated method stub
        String a = txtID.getText().toString();
         int b = a.hashCode();
        txtCode.setText(b);
    }
    }

就像,它将向后读取代码并显示经过哈希和修剪的原始数据。

4

2 回答 2

2

您似乎误解了Object 的.hashCode()含义。它绝不是给定对象的“加密安全”哈希。

它的唯一作用是遵守 .equals()/.hashCode() 合约。并且合约基本上有一个规则:如果两个对象实例被认为相等,那么它们的哈希码应该相等。就是这样。

这是一个完全合法的 hashCode() 实现:

@Override
public int hashCode() {
    return 42; //legal but useless
}

该函数最突出的用途是在Sets 中使用时。Map因此,这包括在s中用作键。在这两种情况下,底层的使用都是哈希表。这就是为什么使用的哈希算法应该有一个不错的分布。

于 2013-05-30T00:15:54.820 回答
2

hashCode 方法来自 java.lang.Object 并且应该(必须?)遵循以下约定:

  • 每当在 Java 应用程序执行期间对同一个对象多次调用它时,hashCode 方法必须始终返回相同的整数,前提是没有修改对象上的 equals 比较中使用的信息。该整数不需要从应用程序的一次执行到同一应用程序的另一次执行保持一致。
  • 如果两个对象根据 equals(Object) 方法相等,则对两个对象中的每一个调用 hashCode 方法必须产生相同的整数结果。
  • 如果根据 equals(java.lang.Object) 方法,如果两个对象不相等,则不需要对两个对象中的每一个调用 hashCode 方法都必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。

我不确定您在这种情况下所说的“解密 hashCode”是什么意思,它可能不是您在这里寻找的功能/行为。

更多信息:http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()

于 2013-05-30T00:12:38.583 回答