md5 原理
来源:互联网 发布:巅峰霍华德身体数据 编辑:程序博客网 时间:2024/06/05 05:15
最近一个项目需要模拟md5的实现过程,经过两天的研究终于对md5的加密原来有了一点了解
1、是对m[0]-m[15]矩阵的数据的填充
2、经过4轮,每轮16步步骤的运算
第一轮的逻辑运算:F(x,y,z)=(x & y) | ((~x) & z);
第二轮的逻辑运算:G (x,y.z)=(x & z) | (y & (~z);
第三轮的逻辑运算:H(x,y,z)=x ^ y ^ z;
第四轮的逻辑预算:I(x,y,z)=y ^ (x | (~z));
里面涉及到一个十六进制准换成二进制的方法
public class HexStringConvertBinary {
public static Map<String,String> hexToBinary=new HashMap<String, String>();
static{
hexToBinary.put("0", "0000");
hexToBinary.put("1", "0001");
hexToBinary.put("2", "0010");
hexToBinary.put("3", "0011");
hexToBinary.put("4", "0100");
hexToBinary.put("5", "0101");
hexToBinary.put("6", "0110");
hexToBinary.put("7", "0111");
hexToBinary.put("8", "1000");
hexToBinary.put("9", "1001");
hexToBinary.put("A", "1010");
hexToBinary.put("B", "1011");
hexToBinary.put("C", "1100");
hexToBinary.put("D", "1101");
hexToBinary.put("E", "1110");
hexToBinary.put("F", "1111");
}
}
还涉及到两个二进制的异或比较
/**
* 异或比较
* */
public class BinaryXORString {
public static String xorBinary(String upBinary,String downBinary){
StringBuffer strBuf=new StringBuffer();
if(null!=upBinary&&!"".equals(upBinary)&&null!=downBinary&&!"".equals(downBinary)){
for(int i=0;i<upBinary.length();i++){
String up=upBinary.substring(i, i+1);
String down=downBinary.substring(i, i+1);
if(up.equals(down)){
strBuf.append(0);
}else{
strBuf.append(1);
}
}
}
return strBuf.toString();
}
}
- MD5原理
- md5 原理
- MD5原理
- MD5原理
- MD5原理
- md5加密原理 MD5简介
- md5加密原理 MD5简介
- MD5加密原理
- md5算法原理
- MD5算法原理
- md5加密算法原理
- MD5加密算法原理
- MD5摘要算法原理
- MD5加密算法原理
- MD5加密原理
- MD5加密算法原理
- MD5算法原理
- MD5加密算法原理(转载)
- JS、replace 利用正则表达式 ,一次性替换SQL所有参数为数据
- C/C++中动态链接库的创建和调用
- gnuplot 的使用
- 修改类文件,tomcat自动重启的问题
- 使用Partitioned Outer Join实现稠化报表
- md5 原理
- MySql 的基本命令
- Chemical Secret——2、At home
- @Configuration 和 @Bean
- 解决In App Purchase出现“无法链接到itunes store”的问题
- xcode 4.3.3
- WinRAR 4.20 beta2 key!注册文件 注册码
- UART通讯流控制方法
- 软件设计的七大原则(2013年上半年的系分考到)