JAVA木卫一。文件帮助从文件夹中选择多个文件并列出哈希值
第一个程序应采用两个输入作为参数:directory1和directory2。程序应计算文件夹目录1中每个文件的哈希值(使用HMAC),并将该哈希值存储在将保存在文件夹目录2下的新文件中。 (b) 。第二个程序应执行验证过程。它还采用与第一个程序相同的两个输入参数。它应该再次生成散列(您可以重用第一个程序中的一些代码),并检查它们是否与directory2中存储的相应值匹配。对于每个文件,该程序应输出两个字符串:文件名和是/否(表示哈希是否匹配)
我做了一些工作,将从一个文件夹生成单个文件的哈希值,我需要帮助从该文件夹生成所有文件的哈希值。这些代码如下
作用
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.security.MessageDigest;
public class HMAC {
public static void main(String args[]) throws Exception {
String datafile = "/Users/Samip/Desktop/crypto1";
MessageDigest md = MessageDigest.getInstance("SHA1");
FileInputStream fis = new FileInputStream(datafile);
byte[] dataBytes = new byte[1024];
int nread = 0;
while ((nread = fis.read(dataBytes)) != -1) {
md.update(dataBytes, 0, nread);
};
byte[] mdbytes = md.digest();
//convert the byte to hex format
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < mdbytes.length; i++) {
sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
}
//System.out.println("SHA-1 value is :: " + sb.toString());
FileWriter file = new FileWriter("/Users/Samip/Desktop/crypto/output.txt");
PrintWriter output = new PrintWriter(file);
output.println(sb.toString());
output.close();
System.out.println(sb.toString());
}
}
我希望有人能帮我
# 1 楼答案
您可以使用this对所有文件进行迭代,并对其使用哈希函数。将结果存储在一个文件中,用
\n
(换行符)分隔对于第二个程序,您可以重用该代码,并使用this从文件中读取哈希值。然后用
\n
分割它们以获得哈希值,并将它们与哈希函数的输出进行比较# 2 楼答案
基本布局/自顶向下方法
从你所知道的开始,并将其应用到方法中。你从名字和他们需要做的事情开始。一秒钟也不要考虑实现,只考虑逻辑流
在您的情况下,您将需要以下内容:
将其包装在main()中。
你需要在那里填写你的类名
自上而下实施
从最外层的方法开始,并尝试正确的方法。剩下的部分可以从伪代码开始
现在,您的程序应该能够遍历源文件夹,创建(虚拟)散列并打印到系统。列出它将写入的文件
优化方法
现在一步一步地做剩下的事情——一次一个方法。直到你做完了或者什么东西坏了——在这种情况下,你会回来寻求帮助
工作示例