Java SDK提供了数据完整性校验、服务器端加密、客户端加密等方法,来保证您在上传、下载和拷贝过程中数据的安全性。
数据完整性校验
Java SDK提供基于MD5和CRC的数据校验,确保上传、下载和拷贝过程中的数据完整性。
- MD5
如果上传时设置了Content-MD5,OSS会根据接收的内容计算MD5。OSS计算的MD5值和上传提供的MD5值不一致时,则返回InvalidDigest。从而保证数据的完整性。
以下代码用于上传时进行MD5校验:
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; // 创建OSSClient实例。 OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); // 上传字符串。 String content = "Hello OSS"; ObjectMetadata meta = new ObjectMetadata(); // 设置MD5校验。 String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes())); meta.setContentMD5(md5); ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta); // 关闭OSSClient。 ossClient.shutdown();
说明 putObject、getObject、appendObject、postObject、uploadPart支持MD5校验。 - CRC64
上传、下载和拷贝文件时默认开启CRC数据校验,确保数据的完整性。
以下代码用于上传时查看CRC数据校验是否生效:
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; // 创建OSSClient实例。 OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); // 上传字符串。 String content = "Hello OSS"; PutObjectResult result = ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes())); // 判断是否开启CRC校验,true为开启,false为关闭。 if (ossClient.getClientConfiguration().isCrcCheckEnabled()) { // 通过响应结果查看CRC校验是否生效。 OSSUtils.checkChecksum(result.getClientCRC(), result.getServerCRC(), result.getRequestId()); } // 关闭OSSClient。 ossClient.shutdown();
说明- putObject、getObject、appendObject、uploadPart支持CRC64校验。
- CRC64校验会占用一定的CPU,上传、下载速度会有影响。
服务器端加密
上传文件时,设置元信息中serverSideEncryption参数为AES256或KMS,即可实现该文件在服务器端加密存储。更多信息请参见开发指南中的服务器端加密编码。
以下代码用于上传时设置服务器端加密:
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 上传字符串。
String content = "Hello OSS";
ObjectMetadata meta = new ObjectMetadata();
// 指定此文件在服务器端的加密编码为AES256。
meta.setServerSideEncryption(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);
// 关闭OSSClient。
ossClient.shutdown();
客户端加密
如需客户端加密,您可将数据在本地加密,然后上传到OSS,并在下载到本地后解密。详情请参见开发指南中的客户端加密SDK介绍。
在文档使用中是否遇到以下问题
更多建议
匿名提交