java 根据ssid(wifi名称)和password(密码)获取PMK

2 篇文章 0 订阅

package com.yhx.utils;

import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.math.BigInteger;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class WPA2Hasher {
    static SecretKeyFactory pbkdf2WithHmacSHA1;
static {
    try {
         pbkdf2WithHmacSHA1 = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
}

    public static String generate(String ssid,String password) {
        try {
            return toHex(pbkdf2WithHmacSHA1.generateSecret(
                    new PBEKeySpec(password.toCharArray(), ssid.getBytes(), 4096, 256)).getEncoded());
        }catch(Exception ex) {return "ERROR";}
    }
    
    private static String toHex(byte[] array) {
        try {
            String hex = new BigInteger(1,array).toString(16);
            int paddingLength = (array.length * 2) - hex.length();
            if(paddingLength > 0) {
                return String.format("%0" + paddingLength + "d", 0) + hex;
            }else {
                return hex;
            }
        }catch(Exception ex) {}
        return "WARN: Unknown error occured";
    }
    
    public static void main(String[] args)throws Exception {

        long start = System.currentTimeMillis();
        ExecutorService executorService = Executors.newCachedThreadPool();
        CountDownLatch countDownLatch = new CountDownLatch(100);
        for(int i = 0; i < 1000; i++) {
            int k=i;
            executorService.execute(()->{
                for(int t = 0; t < 10; t++) {
                    generate("1", k+"");
                }
                countDownLatch.countDown();
            });
        }
        countDownLatch.await();
        long end = System.currentTimeMillis();
        System.out.println(end-start);
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值