MD5加密应用
MD5加密的特点: 加密不可逆, 一点改变 整个加密后的数据都改变
可应用于文件传输的验证
验证文件是否被篡改
MD5加密后的数据是公开的, 如果有一点点篡改, 加密后的密文都天差地别
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
public class MD5Test {
public static void main(String[] args) {
try {
String content = read("E:/1.txt");
System.out.println(getMD5(content));
//文件加密后: FC3FF98E8C6A0D3087D515C0473F8677
//更改后加密: 3F55A298D15865860F816A0C64F7F8FB
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String read(String fileName) throws FileNotFoundException {
StringBuffer sb=new StringBuffer();
File file =new File(fileName);
InputStream in=null;
if(file.isFile()&&file.exists()) {
byte[] temp=new byte[1024];
int byteread=0;
in = new FileInputStream(file);
try {
while((byteread=in.read(temp))!=-1) {
String str=new String(temp,0,byteread);
sb.append(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return sb.toString();
}
public static String getMD5(String message) {
String md5str = "";
try{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] input = message.getBytes();
byte[] buff = md.digest(input);
md5str = bytesToHex(buff);
} catch(Exception e) {
e.printStackTrace();
}
return md5str;
}
public static String bytesToHex(byte[] bytes) {
StringBuffer md5str = new StringBuffer();
int digital;
for(int i = 0; i < bytes.length; i++) {
digital = bytes[i];
if(digital < 0) {
digital += 256;
}
if(digital < 16){
md5str.append("0");
}
md5str.append(Integer.toHexString(digital));
}
return md5str.toString().toUpperCase();
}
}
创建对象
- 普通创建实例的方法: 使用new关键字
Date date=new Date();
- 利用框架创建实例的方法: 依赖倒转 IOC
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("conf/spring-service.xml");
Date date1=context.getBean("date",Date.class);
System.out.println(date1);
结果显示: