OSS Android SDK提供了数据完整性校验方法,保证您在上传、下载和拷贝过程中数据的安全性。

由于移动端网络环境的复杂性,数据在客户端和服务器之间传输时可能会出错。为此,OSS Android SDK 提供了基于CRC端到端以及MD5两种数据完整性校验方式。
  • CRC校验

    在读取下载数据流的时候,如果开启了CRC校验,会在数据流读取完毕后自动验证数据完整性。

    以下代码用于开启CRC校验:

    GetObjectRequest request = new GetObjectRequest(OSSTestConfig.ANDROID_TEST_BUCKET, testFile);
    //开启CRC效验。
    request.setCRC64(OSSRequest.CRC64Config.YES);
    //....
    try{
    	GetObjectResult result = oss.getObject(request);
    	InputStream in = result.getObjectContent();
    	ByteArrayOutputStream output = new ByteArrayOutputStream();
        byte[] buffer = new byte[BUFFER_SIZE];
        int len;
        while ((len = in.read(buffer)) > -1) {
                output.write(buffer, 0, len);
        }
        output.flush();
    	in.close();
    }catch(ClientException e){
    	//...
    }catch(InconsistentException e){
        //....
    }
  • MD5校验

    如果要校验分片上传到OSS的文件和本地文件是否一致,可以在上传分片时携带分片的Content-MD5值,OSS服务器会帮助用户进行MD5校验。只有OSS服务器接收到的分片MD5值和Content-MD5一致时才可以上传成功,从而保证上传分片的一致性。

    以下代码用于设置MD5验证:

    UploadPartRequest uploadPart = new UploadPartRequest("<bucketName>", "<objectKey>", uploadId, currentIndex); 
    // 设置分片内容
    uploadPart.setPartContent(partData);  
    //设置MD5内容 
    uploadPart.setMd5Digest(BinaryUtil.calculateBase64Md5(data));