Tag: 哈希

将Java哈希码组合成“主”哈希码

我有一个实现了hashCode()的vector类。 它不是由我编写的,而是使用2个素数来乘以2个向量分量,然后对它们进行异或运算。 这里是: /*class Vector2f*/ … public int hashCode() { return 997 * ((int)x) ^ 991 * ((int)y); //large primes! } …因为这是来自一个已建立的Java库,我知道它的工作正常。 然后我有一个Boundary类,它包含2个向量,“start”和“end”(表示一行的端点)。 这两个向量的值是边界的特征。 /*class Boundary*/ … public int hashCode() { return 1013 * (start.hashCode()) ^ 1009 * (end.hashCode()); } 在这里,我试图为构成这个边界的唯一2元组向量(开始和结束)创建一个好的hashCode()。 我的问题:这个hashCode()实现是否有效? (请注意,我在后一个hashCode()实现中使用了2个不同的素数;我不知道这是否有必要但是为了安全而不是更好,当我试图避免常见因素时,我猜 – 因为我认为这是为什么素数很受哈希函数的欢迎。)

MD5签署HttpServletResponse

我正在寻找一种方法来检查HttpServletResponse的内容,以便用MD5哈希对它们进行签名。 伪代码可能看起来像这样 process(Response response, Request request){ defaultProcessingFor(response,request); dispatcher.handle(response,request); // Here I want to read the contents of the Response object (now filled with data) to create a MD5 hash with them and add it to a header. } 那可能吗?

Java:重复的对象被添加到set?

如果我运行以下代码,则输出为2,这意味着该集合包含2个元素。 但是我认为该集应该包含1,因为两个对象基于hashcode()值和.equals()方法是相等的。 在我的理解中似乎有些明显的错误? package HELLO; import java.util.HashSet; import java.util.Set; public class Test { public static void main(String[] args) throws Exception { Set s = new HashSet(); Alpha a1 = new Alpha(); Alpha a2 = new Alpha(); s.add(a1); s.add(a2); System.out.println(s.size()); } } class Alpha { int a = 10; public int hashcode() { return a; } […]

使用两个(或更多)对象作为HashMap键

我想将某些对象存储在HashMap中。 问题是,通常只使用一个对象作为密钥。 (例如,您可以使用String。)我想要使用多个对象。 例如,Class和String。 有没有一种简单而干净的方法来实现它?

如何在Java中使用SHA-512散列密码?

我一直在研究Java String加密技术,遗憾的是我还没有找到任何关于如何在Java中使用SHA-512散列String的好教程。 我读了一些关于MD5和Base64的博客,但它们并不像我想的那样安全(实际上,Base64不是加密技术),所以我更喜欢SHA-512。

Java,在multithreadingevnironments中通过散列统一划分传入的工作

我已经实现了一个java代码来执行传入任务(作为Runnable ),其中n个Threads基于他们的hashCode模块nThreads 。 理想情况下,工作应该在这些线程中一致地传播。 具体来说,我们将dispatchId作为每个Task的字符串。 这是这个java代码片段: int nThreads = Runtime.getRuntime().availableProcessors(); // Number of threads Worker[] workers = new Worker[nThreads]; // Those threads, Worker is just a thread class that can run incoming tasks … Worker getWorker(String dispatchId) { // Get a thread for this Task return workers[(dispatchId.hashCode() & Integer.MAX_VALUE) % nThreads]; } 重要提示:在大多数情况下,dispatchId是: String dispatchId […]

好hashCode()实现

在hashCode方法的Best实现中接受的答案给出了一种看似很好的方法来查找哈希码。 但我是Hash Codes的新手,所以我不知道该怎么做。 对于1),我选择的非零值是否重要? 1和其他数字一样好,例如素数31 ? 对于2),我是否将每个值添加到c? 如果我有两个long , int , double等字段怎么办? 我是否在本课程中正确理解了它: public MyClass{ long a, b, c; // these are the only fields //some code and methods public int hashCode(){ return 37 * (37 * ((int) (a ^ (a >>> 32))) + (int) (b ^ (b >>> 32))) + (int) (c ^ (c […]

FileChannel ByteBuffer和Hashing Files

我在java中构建了一个文件哈希方法,它接受filepath+filename输入字符串表示,然后计算该文件的哈希值。 散列可以是任何本机支持的java散列算法,例如MD2到SHA-512 。 我试图找出最后一滴性能,因为这个方法是我正在研究的项目的一个组成部分。 我被建议尝试使用FileChannel而不是常规的FileInputStream 。 我原来的方法: /** * Gets Hash of file. * * @param file String path + filename of file to get hash. * @param hashAlgo Hash algorithm to use. * Supported algorithms are: * MD2, MD5 * SHA-1 * SHA-256, SHA-384, SHA-512 * @return String value of hash. (Variable length dependent […]

HashSet包含自定义对象的问题

我的自定义类将由HashSet包含 public class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return “Person{” + “hashcode='” + this.hashCode() + ‘\” + “name='” + name + ‘\” + “, age=” + age + ‘}’; } @Override public boolean equals(Object o) { […]

在Set中存储数组并避免重复

HashSet boog = new HashSet(); boog.add(new String[]{“a”, “b”, “c”}); boog.add(new String[]{“a”, “b”, “c”}); boog.add(new String[]{“a”, “b”, “d”}); 结果是 [a, b, c] [a, b, d] [a, b, c] 其中[a,b,c]重复,因此散列函数不能按预期工作。 我将如何重写String数组的Hash方法。 或者就此而言,通用数组? 有没有更好的方法来完成我想要做的事情?