同じチェックサム生成方法(SHA-256)を持つ2つのプログラムがあります。 違いは、最初のプログラムではパスが(windowspath/folder/file)、2番目のパスでは(./folder/file)です。ここ コードである:同じアルゴリズムでチェックサムを生成すると異なる出力が返される
プログラム1
String address = fileAddr.getText();
File file = new File(address);
try
{
checksum = getChecksum(file.getAbsolutePath());
data = generateByte(address);
}
catch (NoSuchAlgorithmException | IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
チェックサム生成方法
public static String getChecksum(Serializable object) throws IOException, NoSuchAlgorithmException
{
ByteArrayOutputStream baos = null;
ObjectOutputStream oos = null;
System.out.println(object.toString());
try
{
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] thedigest = md.digest(baos.toByteArray());
return DatatypeConverter.printHexBinary(thedigest);
}
finally
{
oos.close();
baos.close();
}
}
プログラム2
File folder = new File(".\\Plugins");
File[] listOfFiles = folder.listFiles();
listChecksum.add(getChecksum(listOfFiles[i].getPath()));
問題はタイトルに記載されているとおり、2つのチェックサムは一致しません。
は、あなたも、どのようにハッシュ世代の仕事を知っていますか:
私は、チェックサムを生成する関数でファイルの内容を読むことをお勧めでしょうか?申し訳ありませんが、私が傲慢だがハッシュ(SHA-256で作られたハッシュも同じ)という音は、同じファイルでは常に同じものです。 – IndieDev