如何解密哈希码?解码也是一样??我如何解密/解码这个代码?谁能帮我一下?
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);
}
}
像一样,它将向后读取代码并显示已散列和修剪的原始数据。
hashCode方法来自java.lang.Object,应该(必须?)遵循以下约定:
- 在同一个对象上被多次调用时执行Java应用程序时,hashCode方法必须中不使用任何信息时,始终返回相同的整数对象上的Equals比较被修改。这个整数不需要从应用程序的一次执行到另一次执行保持一致执行相同的应用程序。
- 如果两个对象根据equals(Object)方法相等,则在两个对象上分别调用hashCode方法必须生成
- 如果两个对象不相等,根据equals(java.lang.Object)方法,然后在两个对象中的每一个都必须产生不同的整数结果。但是,程序员应该意识到,生成不同的对于不相等对象的整数结果可以提高散列表。
我不确定你在上下文中所说的"解密hashCode"是什么意思,它可能不是你在这里寻找的功能/行为。
更多信息:http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()
你似乎误解了Object的.hashCode()
是关于什么的。它绝不是给定对象的"加密安全"哈希。
它的唯一作用是遵守。equals()/。hashcode()合约。这个合约基本上有一条规则:如果两个对象实例被认为是相等的,它们的哈希码应该是相等的。就这些了。
这是一个完全合法的hashCode()实现:
@Override
public int hashCode() {
return 42; //legal but useless
}
这个函数最突出的用途是在Set
s中使用。因此,这包括在Map
s中作为键使用。在这两种情况下,底层使用的都是哈希表。这就是为什么所使用的哈希算法应该有一个像样的分布。