📄 digestinput.java
字号:
package seven;
/**
* @author wangmj
* @mail <a mailto="wangmingjie_2002@hotmail.com"> 2005-5-9 2005
* 下面一段程序计算从输入(出)流中计算消息摘要。
* DigestInput.java
*/
import java.io.FileInputStream;
import java.security.DigestInputStream;
import java.security.MessageDigest;
public class DigestInput {
public static void main(String[] args) throws Exception {
String fileName = "test.txt";
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream fin = new FileInputStream(fileName);
DigestInputStream din = new DigestInputStream(fin, md);//构造输入流
//DigestOutputStream dout = new DigestOutputStream(fout,md);
//使用输入(出)流可以自己控制何时开始和关闭计算摘要
//也可以不控制,将全过程计算
//初始时是从开始即开始计算,如我们可以开始时关闭,然后从某一部分开始,如下:
//din.on(false);
int b;
while ((b = din.read()) != -1) {
//做一些对文件的处理
//if(b=='$') din.on(true); //当遇到文件中的符号$时才开始计算
}
byte[] re = md.digest();//获得消息摘要
//下面把消息摘要转换为字符串
String result = "";
for (int i = 0; i < re.length; i++) {
result += Integer.toHexString((0x000000ff & re[i]) | 0xffffff00)
.substring(6);
}
System.out.println(result);
//04e37ed6bea7db16051377d70a527b75
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -