这段MD5加密算法是什么意思,谁能帮我解释下?不会JAVA看不懂。。。

importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava... import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;

public class CreateMD5 {

public static byte[] getMD5(File file) {

FileInputStream fis = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
fis = new FileInputStream(file);
byte[] buffer = new byte[2048];
int length = -1;

while ((length = fis.read(buffer)) != -1) {
md.update(buffer, 0, length);
}
byte[] b = md.digest();

return b;
} catch (Exception ex) {
ex.printStackTrace();
return null;
} finally {
try {
fis.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
展开
 我来答
xzhslr
推荐于2017-11-25
知道答主
回答量:22
采纳率:0%
帮助的人:18.6万
展开全部
public static byte[] getMD5(File file) {

FileInputStream fis = null;//定义文件字节流
try {
MessageDigest md = MessageDigest.getInstance("MD5");//创建MD5加密使用的对象
fis = new FileInputStream(file);//读取需要加密的文件,并封装如流对象里面
byte[] buffer = new byte[2048];//创建字节数据,用于将文件中的字符转换成字节
int length = -1;
//fis.read--从此输入流中将最多 buffer.length 个字节的数据读入一个 byte 数组中
//如果长度为-1说明已经读到最后则跳出循环
while ((length = fis.read(buffer)) != -1) {
//使用指定的 byte 数组,从头开始按照MD5进行编码
md.update(buffer, 0, length);
}
byte[] b = md.digest();//该方法的调用表示完成的编码计算

return b;
} catch (Exception ex) {
ex.printStackTrace();
return null;
} finally {
try {
fis.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}

大体上就是这么个意思
更多追问追答
追问
请问是将整个文件进行MD5加密运算还是只是把byte数组中读到的2048个字节进行MD5加密运算?
追答
是按照你设定的字节数组长度来从fis对象里面顺序读入,外层使用的是while循环知道fis里面的数据全部读完,这时候加密的数据通过 byte[] b = md.digest();赋值到字节数组b中。
coffeezhu007
2012-05-10 · TA获得超过715个赞
知道小有建树答主
回答量:638
采纳率:0%
帮助的人:429万
展开全部
•MessageDigest.getInstance("MD5"):创建消息摘要。
•.update(plaintext):用明文字符串计算消息摘要。
•.digest():读取消息摘要。

这段程序的意思是 对给入的一个文件,每一行进行加密
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恋人游
2012-05-09 · 超过11用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:43.7万
展开全部
MessageDigest md = MessageDigest.getInstance("MD5");
获取 MD5加密的一个实例
fis = new FileInputStream(file);
对传进来的文件进行操作(读取到程序中)
while ((length = fis.read(buffer)) != -1) {
md.update(buffer, 0, length);
}

将每次读到的值放在数组byte(buffer )中
进行加密md.update(buffer, 0, length);
return b; 返回加密后的byte数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式