md5密码入库
<?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密码入库的更多相关文章
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...
- 【转】Java生成对应字符串的MD5密码模块
原文网址:http://www.cnblogs.com/xudong-bupt/archive/2013/05/10/3070899.html (1)一般使用的数据库中都会保存用户名和密码,其中密码不 ...
- 如何破解密码的哈希值,破解双MD5密码值
这是关于我如何破解密码的哈希值1亿2200万* John the Ripper和oclHashcat-plus故事. 这是几个月前,当我看到一条推特:从korelogic约含共1亿4600万个密码的密 ...
- MD5 密码加密算法 系统等待
MD5 密码加密算法 public static String md(String md, String pass) { MessageDigest m; String passok = " ...
- 使用okHttp登录、Md5密码加密
1.使用okHttp3登录 2.Md5密码加密 3.完整代码 4.项目案例 使用okHttp3登录: 使用okHttp3之前要在build.gradle引入okHttp3的依赖(顺便引入解析数据的gs ...
- MD5 密码破解 碰撞 网站
MD5反向查询网站 http://www.cmd5.com/ 文件MD5值查询网站 http://www.atool.org/file_hash.php 个人对密码破解的理解 1.使用MD5对密码加密 ...
- 免费MD5解密网站,轻松破解md5密码,mysql5/mysql323,ntlm,salt密码
md5解密网站:http://cmd5.la 网站语言:php 免费指数:★★★ (8位内小写数字字母免费,11位内数字免费) 解密范围:★★★★☆ (覆盖了1-12位很多常用密码和特殊 ...
- Apach Shiro MD5密码加密过程(明文生成密码过程)详细解析
前言: 最近再项目当中使用的ApachShiro安全框架,对于权限和服务器资源的保护都有一个很好的管理.前期主要参考的文章有 项目中设计密码的加盐处理以及二次加密问题,跟着断点 一步步揭开Apach ...
- 015 Android md5密码加密及其工具类
1.md5加密介绍 MD5算法是广泛使用的杂凑函数,也就是哈希函数,英文全拼是:Message Digest Algorithm,对应的中文名字是消息摘要算法. MD5加密:将字符串转换成 32位的字 ...
随机推荐
- MYSQL - 外键、约束、多表查询、子查询、视图、事务
MYSQL - 外键.约束.多表查询.子查询.视图.事务 关系 创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生 ...
- csps模拟8990部分题解
题面: 666: 重点在题意转化:每个数可以乘k,代价为k,可以减一,代价为1, 所以跑最短路即可 #include<iostream> #include<cstdio> #i ...
- js 忘记密码发送短信记录cookie
<div class="forgetPwdBox" style="display:none"> <div class="forTit ...
- System.Web.Mvc.RoutePrefixAttribute.cs
ylbtech-System.Web.Mvc.RoutePrefixAttribute.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutra ...
- laravel装饰者模式例子
interface Decorator{ public function display(); } class XiaoFang implements Decorator { private $nam ...
- Jumpserver-1.5.2 安装步骤
Jumpsever 是飞致云旗下的一块开源的堡垒机.在如今都在上云的趋势下,一款堡垒机非常重要. 官网:http://jumpserver.org/ GitHub:https://github.com ...
- TKmybatis的框架介绍和原理分析及Mybatis新特性演示
tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,下面来看看这个框架的基本使用,后面会对相关源码进行分析,感兴趣的同学可以看一下,挺不错的一个工具 实现对员工表的增删改查 ...
- Python学习之文件操作(二)
CSV文件处理 在Python中处理CSV文件可以使用模块csv.有关csv模块的官方资料看这里. 1 读取csv文件 csv.reader(csvfile, dialect='excel', **f ...
- Java怎样对一个属性设置set或get方法的快捷键
具体步骤如下: 首页,在testApp.java 类中定义属性,例如:public Sting name; 其次,Alt+Shift+S, 选择Generate Getters and Setter ...
- leetcode-86-分割链表
题目描述: 方法一: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.va ...