对象存储服务 OBS-客户端加密接口(Java SDK):初始化CryptoCipher

时间:2024-06-19 16:03:32

初始化CryptoCipher

OBS Java SDK提供两种加密套件。您可根据使用场景自行选择。

CtrRSACipherGenerator继承于CTRCipherGenerator,不需要提供数据密钥或初始值,只需要提供RSA公钥或RSA私钥,用以加密和解密随机生成的数据密钥。

CTRCipherGenerator仅需提供一个数据密钥,所有对象均使用该数据密钥进行加密。

表1 CtrRSACipherGenerator类型参数

参数名称

参数类型

是否必选

描述

privateKey

PrivateKey

解密文件时必选(例如getObject)

参数解释

RSA私钥。

默认取值:

publicKey

PublicKey

加密文件时必选(例如putObject)

参数解释

RSA公钥。

默认取值:

masterKeyInfo

String

可选

参数解释

密钥信息,该信息会存至对象的自定义元数据中, 帮助您区分不同密钥,需您自行维护 masterKeyInfo与 密钥的映射关系。

默认取值:

secureRandom

SecureRandom

必选

参数解释

安全随机数生成器,用于随机生成cryptoKeyBytes和cryptoIvBytes,请您根据业务需求选择设置。

默认取值:

needSha256

boolean

可选

参数解释

是否校验加密后数据的sha256,并设置加密前后的sha256作为自定义元数据。

说明:

为了节省内存开销,SDK 采用了流式计算的方法,这也就意味着,普通上传时需要读取并加密文件两次;在另外由于断点续传上传接口为分段上传接口的封装,在断点续传下,则需要读取并加密文件三次。

取值范围:

true:设置need_sha256为true时,SDK会自动计算待上传对象的加密前sha256值与加密后的sha256值,并存至对象自定义元数据,同时也会在发送请求时将加密后的文件的sha256值置于请求头,服务端收到请求后会计算收到对象的sha256,如果sha256不一致会返回错误信息。

false:不计算校验加密后数据的sha256。

默认取值:

false

表2 CTRCipherGenerator类型参数

参数名称

参数类型

是否必选

描述

masterKeyInfo

String

可选

参数解释

密钥信息,该信息会存至对象的自定义元数据中,帮助您区分不同cryptoKeyBytes,需您自行维护 masterKeyInfo与 cryptoKeyBytes的映射关系。

默认取值:

cryptoKeyBytes

byte[]

必选

参数解释

加密数据所使用的数据密钥。

约束限制:

长度必须为32 bytes。

默认取值:

cryptoIvBytes

byte[]

可选

参数解释

加密数据时所使用的初始值。

约束限制:

  • 长度必须为16 bytes。
  • 指定时,所有对象均使用该初始值加密;未指定时,SDK会为每个对象随机生成不同初始值。

默认取值:

secureRandom

SecureRandom

必选

参数解释

安全随机数生成器,用于在未设置cryptoKeyBytes或cryptoIvBytes时随机生成缺失的对应参数,请您根据业务需求设置。

默认取值:

needSha256

boolean

可选

参数解释

是否校验加密后数据的sha256,并设置加密前后的sha256作为自定义元数据。

说明:

为了节省内存开销,SDK 采用了流式计算的方法,这也就意味着,普通上传时需要读取并加密文件两次;在另外由于断点续传上传接口为分段上传接口的封装,在断点续传下,则需要读取并加密文件三次。

取值范围:

true:设置need_sha256为true时,SDK会自动计算待上传对象的加密前sha256值与加密后的sha256值,并存至对象自定义元数据,同时也会在发送请求时将加密后的文件的sha256值置于请求头,服务端收到请求后会计算收到对象的sha256,如果sha256不一致会返回错误信息。

false:不计算校验加密后数据的sha256。

默认取值:

false

support.huaweicloud.com/sdk-java-devg-obs/obs_21_2303.html