了解MD5加密
MD5即Message-Digest Algorithm 5(信息-摘要算法5),MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以百防止被篡改。MD5是不可逆加度密,也就是说问没有破解的方法,或者说破解的方法只能靠穷举法答!
1、md5加密是对字符或密码进行的16位或32位等加密方式! 一般在普通MDB数据库百经常用到,比如论坛数据库等有用!
2、加密解密并不矛盾,比如银行系统的128位加密现在谁可以轻易破的了呢,虽然md5加密不算很难回破,但一般也是穷破法,如果密码不是过于简单的话,那么就很难破(使用工具)!比如密码为 dafsd63f43t5#$! 这样的密码经过md5加密之后就形成了一段密文.用穷破法的话这样一个密码也许要用几年的时间才可以破开!
当然以上这段废话可能大家听起来是很抽象的,那就不如实践一下!
MD5加密的使用
首先需要在pom.xml中添加相应的包依赖
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.12</version>
</dependency>
package com.whc.wznoteserver2.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.commons.codec.digest.DigestUtils;
public class TestMD5 {
public static void main(String[] args) {
String salt = "!@#";
String content=readFileByBytes("C:\\Users\\Administrator\\Desktop\\2.txt");
String md5 = DigestUtils.md5Hex(content);
System.out.println(md5);
//4aa1d36a56eb1884e2906ec376311c99--正确的md5
}
private static String md5(String mm,String salt) {
return DigestUtils.md5Hex(mm+salt);
}
/**
* 从文件读取内容
* @param fileName
* @return
*/
public static String readFileByBytes(String fileName) {
StringBuffer sb = new StringBuffer();
try {
File file = new File(fileName);
InputStream in = null;
if(file.isFile() && file.exists()) {//判断文件是否存在
//System.out.println("以字节为单位读取文件内容,一次读取多个字节");
//一次读多个字节
byte[] tempbytes = new byte[1024];
int byteread = 0;
in = new FileInputStream(file);
//读入多个字节到字节数组中,byteread为一次读入的字节数
while((byteread = in.read(tempbytes))!=-1) {
//System.out.write(tempbytes,0,byteread);
String str = new String(tempbytes,0,byteread);
sb.append(str);
}
}
}catch(Exception e) {
}finally {
return sb.toString();
}
}
}