中易网

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

答案:3  悬赏:40  
解决时间 2021-01-19 21:33
  • 提问者网友:趣果有间
  • 2021-01-19 09:07
这段MD5加密算法是什么意思,谁能帮我解释下?不会JAVA看不懂。。。
最佳答案
  • 二级知识专家网友:笑迎怀羞
  • 2021-01-19 10:06
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中。
追问:那就是读取出文件里的所有数据,然后加密运算,再把加密得到的MD5码赋值到b中咯?
追答:是的
全部回答
  • 1楼网友:夜余生
  • 2021-01-19 11:54
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数组
  • 2楼网友:鱼芗
  • 2021-01-19 11:34
•MessageDigest.getInstance("MD5"):创建消息摘要。
•.update(plaintext):用明文字符串计算消息摘要。
•.digest():读取消息摘要。
这段程序的意思是 对给入的一个文件,每一行进行加密
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息