【问题标题】:How to calculate SHA-256 checksum of S3 file content如何计算 S3 文件内容的 SHA-256 校验和
【发布时间】:2018-05-08 04:58:23
【问题描述】:

S3 开箱即用提供 S3 对象内容的 MD5 校验和。但我需要计算文件内容的 SHA-256 校验和。该文件可能足够大,因此我不想将文件加载到内存中并计算校验和,而是需要一个解决方案来计算校验和而不将整个文件加载到内存中。

【问题讨论】:

    标签: java amazon-web-services amazon-s3 checksum sha


    【解决方案1】:

    在Java中可以通过以下步骤来实现:

    1. 获取 S3 对象的 InputStream
    2. 为 SHA-256 哈希(或 SHA-1 或 MD5)使用 MessageDigest 和 DigestInputStream 类

    以下是关于如何做到这一点的 sn-p:

    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; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-25
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多