簡體   English   中英

如何計算S3文件內容的SHA-256校驗和

[英]How to calculate SHA-256 checksum of S3 file content

開箱即用的S3提供S3對象內容的MD5校驗和。 但是我需要計算文件內容的SHA-256校驗和。 該文件可能足夠大,所以我不想將文件加載到內存中並計算校驗和,相反,我需要一種解決方案來計算校驗和而不將整個文件加載到內存中。

可以通過以下Java步驟來實現:

  1. 獲取S3對象的InputStream
  2. 將MessageDigest和DigestInputStream類用於SHA-256哈希(或SHA-1或MD5)

以下是有關如何執行此操作的代碼段:

String getS3FileHash(AmazonS3 amazonS3, String s3bucket, String filePath) {
    try {
        InputStream inputStream = amazonS3.getObject(s3bucket, filePath).getObjectContent();
        MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
        DigestInputStream digestInputStream = new DigestInputStream(inputStream, messageDigest);
        byte[] buffer = new byte[4096];
        int count = 0;
        while (digestInputStream.read(buffer) > -1) {
            count++;
        }
        log.info("total read: " + count);
        MessageDigest digest = digestInputStream.getMessageDigest();
        digestInputStream.close();
        byte[] md5 = digest.digest();
        StringBuilder sb = new StringBuilder();
        for (byte b: md5) {
            sb.append(String.format("%02X", b));
        }
        return sb.toString().toLowerCase();
    } catch (Exception e) {
        log.error(e);
    }
    return null; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM