南昌航空大学信息安全试验4-MD5加密的Java实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌航空大学实验报告
2014年3月27日
课程名称:信息安全概论实验名称:MD5加密的Java实现
班级:姓名:学号:
指导老师评定:签名:
一、实验目的
通过实验了解MD5加密的原理,掌握Java语言MD5加密的实现。
二、实验原理
1.哈希(Hash)函数的定义
实现数字签名或计算消息的鉴别码。
以任意长度的消息作为输入,输出一个固定长度的二进制值,称为哈希值或消息摘要。
2.MD(Message Digest)消息摘要
MD5对任意输入的消息计算一个128位的固定长度的值
3.MD5的应用
(1)用于校验下载的文件
可用MD5校验工具软件计算,相当于文件的指纹,32位字母数字
常用于软件下载网站
网站:
先计算文件的MD5值,然后和文件一起发布到网站上。
用户:
下载文件后,计算文件的MD5值,和网站发布的MD5值核对。
(2)将用户密码加密后保存
注册时:
将用户的注册密码(P1)用MD5算法加密后(P2)保存到服务器数据库中;
登录时:
将用户的登录密码(P3)用MD5算法加密后(P4),与服务器数据库中的密
文密码(P2)比较。
三、实验环境
开发工具:JDK、Eclipse
参考资料:JDK API文档
java.security包
MessageDigest类
四、实验内容和任务
使用Java语言编程,模拟注册和登录过程。
五、实验内容
1.注册登录
package t;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.Scanner;
public class MD5{
public static void main(String[]args){
String password="";
String account="";
System.out.print("注册\n用户名:");
Scanner inaccount=new Scanner(System.in);
account=inaccount.nextLine();
System.out.print("密码:");
Scanner inpassword=new Scanner(System.in);
password=inpassword.nextLine();
password=makeMD5(password);
String password2="";
String account2="";
System.out.print("\n\n登录\n用户名:");
Scanner inaccount2=new Scanner(System.in);
account2=inaccount2.nextLine();
System.out.print("密码:");
Scanner inpassword2=new Scanner(System.in);
password2=inpassword2.nextLine();
password2=makeMD5(password2);
if(account.equals(account2)&&password.equals(password2))
{
System.out.println("登录成功!!!");
System.out.println("密文:"+makeMD5(password));
}
else
{
System.out.println("登录失败!!!");
}
//System.out.println("密文:"+makeMD5(password));
}
public static String makeMD5(String password){
MessageDigest md;
try{
//生成一个MD5加密计算摘要
md=MessageDigest.getInstance("MD5");
//计算md5函数
md.update(password.getBytes());
//digest()最后确定返回md5hash值,返回值为8为字符串。
因为md5hash值是16位的hex值,实际上就是8位的字符
//BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
String pwd=new BigInteger(1,md.digest()).toString(16);
//System.err.println(pwd);
return pwd;
}catch(Exception e){
e.printStackTrace();
}
return password;
}
}
五、实验小结
通过本次实验实现了简单的注册,输入用户名和密码,把密码进行MD5加密后保存在变量里,并且登录时,输入用户名和密码,把密码进行MD5加密后,和注册时保存的用户名和密码比较,能够判断是否登录成功。