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验证:

// 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt),Object完整路径中不能包含Bucket名称。
UploadPartRequest uploadPart = new UploadPartRequest("examplebucket", "exampledir/exampleobject.txt", uploadId, currentIndex); 
// 设置分片内容。
uploadPart.setPartContent(partData);  
// 设置MD5内容。
uploadPart.setMd5Digest(BinaryUtil.calculateBase64Md5(data));