首先,加载要在消息摘要中编码的字节。这就是对文件执行此操作的方法(添加必要的try-catch-finally块)。
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
DigestInputStream digestIs = new DigestInputStream(new FileInputStream(fileToValidate), messageDigest);
OutputStream nullOutputStream = new NullOutputStream();
// Read all bytes for the DigestInputStream to see them
IOUtils.copy(digestIs, nullOutputStream);
digestIs.close()
然后,正如您链接到的文档中所指定的,散列需要用base64表示。此代码将转换摘要
byte[]
String fileDigest = new String(Base64.encode(messageDigest.digest(), Base64.NO_WRAP));
这个
NO_WRAP
标记只移除额外的
\n
在绳子的末端。