变换一:循环MD5

最容易理解的变换就是对一个密码进行多次的MD5运算。自定义一个函数,它接受$data和$times两个形参,第一个是要加密的密码,第二个是重复加密的次数。实现这种变换有两种算法—— <?php

//迭代算法

function md5_1_1($data, $times = 32)

{

//循环使用MD5

for ($i = 0; $i < $times; $i++) {

$data = md5($data);

}

return $data;

} //递归算法

function md5_1_2($data, $times = 32)

{

if ($times > 0) {

$data = md5($data);

$times--;

return md5_1_2($data, $times); //实现递归

} else {

return $data;

}

}

?>

变换二:密文分割MD5 <?php

//把密文分割成两段,每段16个字符

function md5_2_1($data)

{

//先把密码加密成长度为32字符的密文

$data = md5($data);

//把密码分割成两段

$left = substr($data, 0, 16);

$right = substr($data, 16, 16);

//分别加密后再合并

$data = md5($left).md5($right);

//最后把长字串再加密一次,成为32字符密文

return md5($data);

} //把密文分割成32段,每段1个字符

function md5_2_2($data)

{

$data = md5($data);

//循环地截取密文中的每个字符并进行加密、连接

for ($i = 0; $i < 32; $i++) {

$data .= md5($data{$i});

}

//这时$data长度为1024个字符,再进行一次MD5运算

return md5($data);

}

?>

变换三:附加字符串干涉 <?php

//附加字符串在原数据的尾部

function md5_3_1($data, $append)

{

return md5($data.$append);

} //附加字符串在原数据的头部

function md5_3_2($data, $append)

{

return md5($append.$data);

} //附加字符串在原数据的头尾

function md5_3_3($data, $append)

{

return md5($append.$data.$append);

}

?> 变换四:大小写变换干涉

由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。 <?php

function md5_4($data)

{

//先得到密码的密文

$data = md5($data);

//再把密文中的英文母全部转为大写

$data = strtotime($data);

//最后再进行一次MD5运算并返回

return md5($data);

}

?> 变换五:字符串次序干涉

把MD5运算后的密文字符串的顺序调转后,再进行一次MD5运算。 <?php

function md5_5($data)

{

//得到数据的密文

$data = md5($data);

//再把密文字符串的字符顺序调转

$data = strrev($data);

//最后再进行一次MD5运算并返回

return md5($data);

}

?>

MD5变换算法是数之不尽的,甚至无须自己再去创造,就用上面的五个互相组合就可以搞出很BT的算法。比如说先循环加密后再分割,并在每一段上附加一个字符串再分别加密,然后变换大小写并颠倒字符串顺序后连成一个长字符串再进行MD5运算……

如果真的很不幸,由于某些漏洞,比如说SQL Injection或者文件系统中的数据库被下载而异致用户密码数据暴露,那么MD5变换算法就能大大地增加破译出密码原文的难度,首先就是使网上很多的 MD5原文/密文对照数据库(要知道,这是破译MD5最高效的方法)没有用了,然后就是使攻击者用常规算法去穷举一串由变换算法得到的密文而搞得焦头烂 额。当然,MD5变换算法特别适合用于非开源的Web程序使用,虽说用在开源的程序中优势会被削弱(大家都知道算法),但是也能抑制MD5原文/密文对照 数据库的作用。要进行这些复杂的变换运算,当然就要花费的更多的系统开销了,然而对于安全性要求很严格的系统来说,多付出一些来换取高一点的安全性,是完 全值得的。

php md5加密数组,php md5加密相关推荐

  1. MD5加密漏洞(MD5绕过方式-0e绕过/数组绕过/MD5碰撞/MD5SQL注入)

    MD5是一种散列函数,是哈希算法的一种,可以将任意长度的输入,通过散列算法变换成128位的散列值 MD5加密有4种绕过方式 0e绕过 数组绕过 MD5碰撞 MD5SQL注入 0e绕过 0e开头的字符串 ...

  2. java中完成md5加密解密_java实现md5加密解密 notNET中加密和解密的实现方法

    java实现md5加密解密 notNET中加密和解密的实现方法 亦或是旅途风光 7-14 1918℃ 22 [ ee21.cn - ASP.NET ] .NET将原来独立的API和SDK合并到一个框架 ...

  3. Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结

    (1)commons-codec包简介 包含一些通用的编码解码算法.包括一些语音编码器,Hex,Base64.MD5 一.md5.base64.commons-codec包 commons-codec ...

  4. Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)

    文章目录 1. AES算法 1.1 AES加密过程 1.1.1 字节代替(SubBytes) 1.1.2 行移位(ShiftRows) 1.1.3 列混合(MixColumns) 1.1.4 加轮密钥 ...

  5. Android常用加密手段之MD5加密(字符串加密和文件加密)

    前言 安全问题一直伴随着互联网的成长,如何有效地保护应用程序的数据是每一个开发者都应该考虑和努力的事情.这篇文章介绍Android平台上常用的加密方式之MD5加密. MD5 MD5即Message-D ...

  6. VC实现数据的加密和解密(MD5加密/DES/RSA加密解密)

    VC实现数据的加密和解密 由于生产实习的时间有限,加上自己这段时间致力于考研,因此,仅仅是实现了通过MD5/DES/RSA的简单的字符串的加密解密,希望有兴趣的兄弟姐妹能够完善它. 主要的程序如下: ...

  7. java对sha1的解密_java 加密解密算法MD5/SHA1,DSA

    通常,使用的加密算法 比较简便高效,密钥简短,加解密速度快,破译极其困难.本文介绍了 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman的使用. 第1章基础知识 1.1. 单 ...

  8. Java 原生 Base64 编解码、Md5、SHA-1、SHA-256 加密摘要算法

    目录 常用加密算法对比 Base64 编解码 MessageDigest 信息摘要 MD5 信息摘要算法 常用加密算法对比 常用加密算法对比 Base64 编解码 1.BASE64 有自己的编码表,可 ...

  9. python实现md5加密_Python实现md5加密验证访问接口总结

    实现md5加密验证访问接口总结 作者:李祥权 [摘要] 在项目开发中,遇到用户端点登陆接口需要加密验证才可以登陆的情况,当我们需要访问对方的接口时,为了保证访问的安全性,使用python实现md5加密 ...

最新文章

  1. Hadoop hdfs完全分布式搭建教程
  2. android仿qq聊天项目点评,android 实现qq聊天对话界面效果
  3. 实现Unity编辑器模式下的旋转
  4. linux 4.4内核是什么,Linux 内核 4.4 LTS 将于2016年1月10日发布
  5. Java09-day09【ArrayList(概述、构造方法、常用方法、遍历)、简易学生管理系统】
  6. PaperNotes(5)-Conditional Generative Adversarial Nets
  7. c++ 函数指针_进化论——从函数指针到被结构封装的函数指针及参数的应用举例...
  8. 打开 Freetextbox 的 InsertImageFromGallery 及如何接收 ftb.imagegallery.aspx 返回的图片信息...
  9. jqprint 分页打印_jQuery打印Html页面自动分页
  10. matlab 模式识别工具箱下载,模式识别matlab工具箱
  11. 登录Windows Server时提示”user profile service服务器登录失败 无法加载用户配置“的解决方法
  12. 有机酸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  13. RL真的很简单 手把手带你入门强化学习
  14. jsv8引擎 垃圾回收机制
  15. 四个程序员编辑器,编程必备!!!
  16. 云课里计算机,【241天】网易云课堂计算机专业基础课程系列——计算机专业导论(6)...
  17. 目前国内常见医用显示器品牌
  18. 【多线程与高并发】JMM内存模型 基础
  19. 利用开源工具搭一套汉英翻译系统(一):预处理工具
  20. 智慧养老之智慧养老监护平台,为智慧养老保驾护航-新导智能

热门文章

  1. python用cartopy包画地图_python绘制地图的利器Cartopy使用说明
  2. 带有神经网络的梯度消失(Vanishing gradients with RNNs)
  3. 如何判断2个线段相交
  4. 1.冯诺依曼体系结构组成及其特点
  5. 剑指Offer 27—二叉树的镜像
  6. 二叉树 | 二叉树的镜像(翻转)
  7. 一种无法用言语表达的爱——父爱
  8. 研究了一堆英语学习软件,发现了一个美国宝藏口语App,国内也能用!
  9. Python 儒略日和公历互转代码
  10. 中国大学MOOC C语言程序设计(大连理工大学) 课后编程题 第十周题解(个人向仅供参考)