package sgk.norkts.sgk;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PassGenerate {
public static List<Map<String, String>> lists = new ArrayList<Map<String, String>>();
public static String[] chars = "0123456789abcdefghijklmnopkrstuvwxyzABCDEFGHIJKLMNOPKRSTUVWXYZ!@#$%^&*()_+-=`~?><,.".split("");
public static int size = chars.length;
public static void main(String[] args){
generatePass(4);
}
public static void generatePass(int len){
Map<String, String> item = new HashMap<String, String>();
double count = 0;
for(double index = 0; index < Math.pow(chars.length, len); index++){
String pass = getNumPass(index);
//item.put("pass", pass);
//item.put("md5", md5(pass));
count++;
synchronized(lists){
//lists.add(item);
}
}
System.out.println(count);
}
public static String getNumPass(double num){
int len = 1;
int pos = 0;
if(num % size == 0){
pos = 1;
}
while(Math.pow(size, len) < num){
len += 1;
}
len += pos;
int[] arr = new int[len];
int count = len - 1;
while(num >= size){
arr[count] = (int) (num % size);
num = Math.floor(num/size);
count--;
}
arr[count] = (int)num;
String result = "";
for(int i = 0; i < len; i++){
result += chars[arr[i]];
}
return result;
}
public static String md5(String s){
char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
try {
byte[] btInput = s.getBytes();
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static class SavePass extends Thread{
public void run(){
while(true){
while(PassGenerate.lists.size() > 0){
Map<String, String> item = PassGenerate.lists.get(0);
synchronized(PassGenerate.lists){
PassGenerate.lists.remove(0);
}
System.out.println(item.get("md5") + "=" + item.get("pass"));
}
}
}
}
}
基本思路,将密码生成转换为n进制数字的循环,通过将n进制各位数的值替换成字符串,即可得到
分享到:
相关推荐
java代码自定义生成密码字典(有界面)
- **执行脚本**:使用特定的脚本或工具,如Python脚本、SQL查询或者专门的数据字典生成工具,对数据库进行扫描,获取所有表的信息。 - **格式化输出**:将收集到的元数据整理成Word文档格式,包括表格结构、字段名...
数据库字典生成是一个重要的数据库管理和维护任务,它可以帮助我们更好地理解和管理数据库的结构、属性以及对象之间的关系。这里,我们讨论的是一个自编写的代码,适用于Oracle和MySQL这两种广泛使用的数据库系统。 ...
在本工具中,Java被用来编写代码,实现数据库连接和数据导出的功能。 2. **JDBC (Java Database Connectivity)**: JDBC是Java中的一个标准API,用于连接和操作各种类型的数据库。通过JDBC,开发者可以执行SQL查询,...
总之,字典排序求全排列的算法通过Java实现,结合了回溯法和深度优先搜索策略,遵循字典序规则生成所有可能的排列。理解并掌握这种算法有助于提升编程能力和解决复杂问题的能力。在实际应用中,这种算法可用于生成...
根据给定的信息,我们可以推断出这是一...综上所述,这段代码提供了一个简单的示例,展示了如何使用Java实现AES加密和基于字典的密码破解过程。然而,在实际场景中,这种破解方式的效率和可行性会受到诸多因素的影响。
1. **连接数据库**:使用Java代码通过JDBC建立与MySQL服务器的连接。你需要提供数据库URL、用户名、密码和驱动类名。例如: ```java String url = "jdbc:mysql://localhost:3306/your_database"; String user = ...
-gen 生成给定熵的密码熵密码模式-en 计算给定密码的熵密码-scp 将源代码刮到字典中字典来源密码模式根据以下规则确定要生成的候选密码的字符集和长度: Character set selectors a small letters A big letters n ...
6. **编程工具**:这个项目可能包含了用某种编程语言(如Python、Java或C#)编写的脚本,用于生成或优化密码字典,以满足特定的复杂度要求。 7. **密码生成算法**:可能涉及了密码生成的随机性算法,确保每个生成的...
- 高效率开发,代码生成器可一键生成前后端代码 - 对一些常用前端组件封装:表格数据请求、数据字典等 - 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断 - 使用ShardingSphere实现多数据源和读写分离。该...
本POJO代码生成器采用Java的Swing技术编码实现,是绿色免费工具,可以自由传播。 由于本工具的内部实现较烂,所以还请反编译高手手下留情,让我留几分颜面。^_^ 由于本人只用过Oracle、DB2、MySQL、MS SQL Server这...
### 华为OD机试C卷 - 猜密码(Java & JS & Python) #### 题目背景 本题目是华为OD机试C卷的一部分,主要考察的是候选人对于组合问题的理解与解决能力,同时也涉及到了算法设计中的回溯算法应用。通过此题目的解答...
通过采用Java语言、SpringBoot框架、Vue.js前端技术以及MySQL数据库等多种技术工具,实现了纹理生成图片系统的高效开发与部署。不仅提高了数据管理的安全性和准确性,同时也增强了系统的稳定性和可扩展性。对于后续...
AES有三个关键参数:密钥长度(128、192或256位)、轮数(10、12或14轮,取决于密钥长度)以及一组固定的参数——字典表(Rijndael的S盒和P盒)。 在Java中,我们可以使用`javax.crypto`包中的类来实现AES加密解密...
例如,许多数据库管理工具(如MySQL Workbench, SQL Server Management Studio, Oracle SQL Developer)内置了元数据导出功能,能自动生成数据字典报告。 4. **源码分析**: 如果`MetadataCreator.java`是源代码,...
本文将详细介绍两种实现全排列的方法:递归排列和字典序排列,并通过具体的代码示例来加深理解。 #### 一、递归排列 递归排列是一种直观且易于实现的方法。其基本思路是从集合中依次选取每一个元素作为排列的第一...
JeeWeb主要定位于企业快速开发平台建设,已内置很多优秀的基础功能和高效的 代码生成 工具,包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、代码生成、 UI模版标签 库等。...
密文的生成过程涉及到在一个由数字构成的二维数组(密码本)中搜索明文中的每个数字,并通过记录搜索到的数字所在位置(行列索引)来形成最终的密文。具体而言: - **明文**:由数字0到9组成的一段字符串。 - **...
主要定位于后台管理系统学习交流,已内置后台管理系统的基础功能和高效的代码生成工具, 包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、工作流组件、代码生成等。 前端界面风格采用...