<?php
//连接数据库
$pdo = new PDO('mysql:host=localhost;dbname=md5;charset=UTF8', 'root', '');
# 设置为false,保证返回数据的结果中,字段类型和数据库中字段类型一致。否则int字段的数据,返回结果可能是字符串类型
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); //配置项 # 定义字符串
$str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@!#%;.";
// $str = "abcde";
# 设置密码长度
$pass_len = 5; //N进制算法
function createNext($str,$arr){ $tmpStr = '';
$isAdd = false; for($i = strlen($str)-1;$i>=0;$i--){ $char = substr($str,$i,1); if($i===strlen($str)-1){
foreach ($arr as $key => $value) {
if($value === $char){
if($key+1 < count($arr)){
$tmpStr = $arr[$key+1].$tmpStr;
}else{
$tmpStr = $arr[0].$tmpStr;
$isAdd = true;
}
}
}
}else{
if($isAdd){
foreach ($arr as $key => $value) {
if($value === $char){ if($key+1 < count($arr)){
$tmpStr = $arr[$key+1].$tmpStr;
$isAdd = false;
}else{
$tmpStr = $arr[0].$tmpStr;
$isAdd = true;
}
}
}
}else{
$tmpStr = $char.$tmpStr;
}
}
} if($isAdd){
$tmpStr = $arr[1].$tmpStr;
}
return $tmpStr;
} // $str = "abcde";
$str_len = strlen($str);
$arr = [];
for($i=0;$i<$str_len;$i++){
$arr[] = substr($str,$i,1);
} //批量插入隔断,数据达到这个数量的时候,执行一次SQL语句
$pageSize = pow($str_len,2); # 进制算法的第一个数字(字母)
// $firstStr = "aaaaaa";
$firstStr = "";
$firstWord = substr($str,0,1);
for($k = 0 ; $k < $pass_len ; $k++ ){
$firstStr .= $firstWord;
} $total = pow($str_len,$pass_len);
$values = ",('".$firstStr."','".md5($firstStr)."','".md5(md5($firstStr))."','".sha1($firstStr)."')"; for ($i=2; $i <= $total; $i++) {
$res = createNext($firstStr,$arr);
$firstStr = $res; $values .= ",('".$firstStr."','".md5($firstStr)."','".md5(md5($firstStr))."','".sha1($firstStr)."')";
if($i%$pageSize == 0){
# 分表。控制每张表中数据的数据量
$table = 'md5_'.$pass_len."_".(int)($i/(pow($str_len,6)));
createTable($table);
$sql = "INSERT INTO ".$table."(`p`,`md5`,`md5md5`,`sha1`) values ".trim($values,",").";";
$stmt = $pdo->prepare($sql);
if (!$stmt->execute()) {
echo "执行SQL失败:".$sql."<br/>";
die;
}
$values = "";
}
} function createTable($table){
global $pdo;
$sql = "CREATE TABLE IF NOT EXISTS ".$table."(
`id` int(12) NOT NULL AUTO_INCREMENT,
`p` VARCHAR (32) DEFAULT NULL,
`md5` VARCHAR (32) DEFAULT NULL,
`md5md5` VARCHAR (32) DEFAULT NULL,
`sha1` VARCHAR (40) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET = utf8";
$stmt = $pdo->prepare($sql);
if (!$stmt->execute()) {
echo "创建数据表失败:".$sql."<br/>";
die;
}
}

写入文件。测试过一个5位数的md5加密文件,大小占到164G。和mysql数据库差不多

//配置项

# 定义字符串
// $str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@!#%;.";
$str = "abcde";
# 设置密码长度
$pass_len = ; //N进制算法
function createNext($str,$arr){ $tmpStr = '';
$isAdd = false; for($i = strlen($str)-;$i>=;$i--){ $char = substr($str,$i,); if($i===strlen($str)-){
foreach ($arr as $key => $value) {
if($value === $char){
if($key+ < count($arr)){
$tmpStr = $arr[$key+].$tmpStr;
}else{
$tmpStr = $arr[].$tmpStr;
$isAdd = true;
}
}
}
}else{
if($isAdd){
foreach ($arr as $key => $value) {
if($value === $char){ if($key+ < count($arr)){
$tmpStr = $arr[$key+].$tmpStr;
$isAdd = false;
}else{
$tmpStr = $arr[].$tmpStr;
$isAdd = true;
}
}
}
}else{
$tmpStr = $char.$tmpStr;
}
}
} if($isAdd){
$tmpStr = $arr[].$tmpStr;
}
return $tmpStr;
} $str_len = strlen($str);
$arr = [];
for($i=;$i<$str_len;$i++){
$arr[] = substr($str,$i,);
} //批量插入隔断,数据达到这个数量的时候,执行一次SQL语句
$pageSize = pow($str_len,); # 进制算法的第一个数字(字母)
// $firstStr = "aaaaaa";
$firstStr = "";
$firstWord = substr($str,,);
for($k = ; $k < $pass_len ; $k++ ){
$firstStr .= $firstWord;
} $total = pow($str_len,$pass_len);
$values = $firstStr." ".md5($firstStr)." ".md5(md5($firstStr))." ".sha1($firstStr); for ($i=; $i <= $total; $i++) {
$res = createNext($firstStr,$arr);
$firstStr = $res;
$values .= " ".$firstStr." ".md5($firstStr)." ".md5(md5($firstStr))." ".sha1($firstStr);
if($i%$pageSize == ){
# 分表。控制每张表中数据的数据量
$myfile = 'md5_'.$pass_len."_".(int)($i/(pow($str_len,)));
if (file_exists($myfile)) {
file_put_contents($myfile, $values, FILE_APPEND);
}else{
$thisfile = fopen($myfile, "w") or die("Unable to open file ".$myfile);
fwrite($thisfile, $values);
}
$values = "";
}
}

md5密码入库的更多相关文章

  1. [信安Presentation]一种基于GPU并行计算的MD5密码解密方法

    -------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...

  2. 【转】Java生成对应字符串的MD5密码模块

    原文网址:http://www.cnblogs.com/xudong-bupt/archive/2013/05/10/3070899.html (1)一般使用的数据库中都会保存用户名和密码,其中密码不 ...

  3. 如何破解密码的哈希值,破解双MD5密码值

    这是关于我如何破解密码的哈希值1亿2200万* John the Ripper和oclHashcat-plus故事. 这是几个月前,当我看到一条推特:从korelogic约含共1亿4600万个密码的密 ...

  4. MD5 密码加密算法 系统等待

    MD5 密码加密算法 public static String md(String md, String pass) { MessageDigest m; String passok = " ...

  5. 使用okHttp登录、Md5密码加密

    1.使用okHttp3登录 2.Md5密码加密 3.完整代码 4.项目案例 使用okHttp3登录: 使用okHttp3之前要在build.gradle引入okHttp3的依赖(顺便引入解析数据的gs ...

  6. MD5 密码破解 碰撞 网站

    MD5反向查询网站 http://www.cmd5.com/ 文件MD5值查询网站 http://www.atool.org/file_hash.php 个人对密码破解的理解 1.使用MD5对密码加密 ...

  7. 免费MD5解密网站,轻松破解md5密码,mysql5/mysql323,ntlm,salt密码

    md5解密网站:http://cmd5.la 网站语言:php 免费指数:★★★        (8位内小写数字字母免费,11位内数字免费) 解密范围:★★★★☆ (覆盖了1-12位很多常用密码和特殊 ...

  8. Apach Shiro MD5密码加密过程(明文生成密码过程)详细解析

    前言: 最近再项目当中使用的ApachShiro安全框架,对于权限和服务器资源的保护都有一个很好的管理.前期主要参考的文章有 项目中设计密码的加盐处理以及二次加密问题,跟着断点 一步步揭开Apach ...

  9. 015 Android md5密码加密及其工具类

    1.md5加密介绍 MD5算法是广泛使用的杂凑函数,也就是哈希函数,英文全拼是:Message Digest Algorithm,对应的中文名字是消息摘要算法. MD5加密:将字符串转换成 32位的字 ...

随机推荐

  1. kubernetes istio的快速安装和使用例子

    安装 [root@master ~]# wget https://github.com/istio/istio/releases/download/1.1.5/istio-1.1.5-linux.ta ...

  2. js 当前时间和对比时间的比较

    <!DOCTYPE><html> <head> <meta charset="utf-8" /> <title>功能:当 ...

  3. error C2712: Cannot use __try in functions that require object unwinding

    转自VC错误:http://www.vcerror.com/?p=52 问题描述: error C2712: Cannot use __try in functions that require ob ...

  4. id(), is, ==, 的区别与小数据池

    1. id() 内存地址 s = 'asdf' n = id(s) print(n)输出:16506464 #16506464为变量s的内存地址 2. == 比较数值 3. is 比较内存地址 数字, ...

  5. Web开发-Servlet&HTTP&Request

    <!doctype html>02 - JavaEE - Servlet&HTTP&Request figure:first-child { margin-top: -20 ...

  6. js 调用接口并传参

    注:需先引入 jquery.json-xx.min.js 1. 参数跟在url后面 var name = '王一'; var age = 18; $.ajax({ type : 'get', url ...

  7. java_缓冲流(字节输出流)

    缓冲流分为: 字节缓冲流:BufferedIntputSream(字节缓冲输出流),BufferdOutputStream(字节缓冲输入流) 字符缓冲流:BufferedReader(字符输入缓冲流) ...

  8. Android 开发 MediaRecorder视频录制入门

    前言 MediaRecorder是Android SDK提供用于录制音视频,关于音频的录制在我另一篇博客里已经介绍.传送门: https://www.cnblogs.com/guanxinjing/p ...

  9. [JZOJ4769]【GDOI2017模拟9.9】graph

    题目 描述 题目大意很明确了,所以不说-- 思考历程 一看见这题,咦,这就是传说中的动态图吗? 普通的动态图是维护连通性,这题是维护它是否是二分图,换言之就是维护它是否有奇环. 好像很复杂的样子. 想 ...

  10. github和gitlab仓库一起使用

    github是网络公有代码仓库,一般用于私人代码托管,而gitlab一般是企业搭建的内部代码仓库.工作期间,我们都会同时用到这两个仓库.可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不 ...