对象存储服务 OBS-客户端加密接口:初始化 CryptoCipher
初始化 CryptoCipher
OBS Java SDK 提供两种 加密套件。您可根据使用场景自行选择。
CtrRSACipherGenerator 继承于CTRCipherGenerator,不需要提供数据密钥或初始值,只需要提供 RSA 公钥或RSA 私钥,用以加密和解密随机生成的数据密钥。
参数名 |
类型 |
约束 |
说明 |
---|---|---|---|
privateKey |
PrivateKey |
解密文件时必选(例如getObject) |
RSA 私钥。 |
publicKey |
PublicKey |
加密文件时必选(例如putObject) |
RSA 公钥。 |
masterKeyInfo |
String |
可选 |
密钥信息,该信息会存至对象的自定义元数据中, 帮助您区分不同密钥,需您自行维护 masterKeyInfo与 密钥的映射关系. |
secureRandom |
SecureRandom |
必选 |
安全随机数生成器,用于随机生成cryptoKeyBytes和cryptoIvBytes,请您根据业务需求选择设置 |
needSha256 |
boolean |
可选 |
是否校验加密后数据的sha256,并设置加密前后的sha256作为自定义元数据. 说明:
设置 need_sha256 为 True 时,SDK 会自动计算待上传对象的加密前 sha256 值与加密后的 sha256 值,并存至对象自定义元数据,同时也会在发送请求时将加密后的文件的 sha256 值置于请求头,服务端收到请求后会计算收到对象的sha256,如若 sha256 不一致会返回错误信息。 为了节省内存开销,SDK 采用了流式计算sha256的方法,这也就意味着,普通上传时需要读取并加密文件两次;另外由于InputStream流无法重复读取,流式上传不支持计算sha256。 |
CTRCipherGenerator 仅需提供一个数据密钥,所有对象均使用该数据密钥进行加密。
参数名 |
类型 |
约束 |
说明 |
---|---|---|---|
masterKeyInfo |
String |
可选 |
密钥信息,该信息会存至对象的自定义元数据中, 帮助您区分不同cryptoKeyBytes,需您自行维护 masterKeyInfo与 cryptoKeyBytes的映射关系. |
cryptoKeyBytes |
byte[] |
必选 |
加密数据所使用的数据密钥,长度必须为 32 bytes. |
cryptoIvBytes |
byte[] |
可选 |
加密数据时所使用的初始值,长度必须为 16 bytes,指定时,所有对象均使用该初始值加密;未指定时,SDK 会为每个对象随机生成不同 初始值. |
secureRandom |
SecureRandom |
必选 |
安全随机数生成器,用于在未设置cryptoKeyBytes或cryptoIvBytes时随机生成缺失的对应参数,请您根据业务需求设置 |
needSha256 |
boolean |
可选 |
是否校验加密后数据的sha256,并设置加密前后的sha256作为自定义元数据. 说明:
设置 need_sha256 为 True 时,SDK 会自动计算待上传对象的加密前 sha256 值与加密后的 sha256 值,并存至对象自定义元数据,同时也会在发送请求时将加密后的文件的 sha256 值置于请求头,服务端收到请求后会计算收到对象的sha256,如若 sha256 不一致会返回错误信息。 为了节省内存开销,SDK 采用了流式计算sha256的方法,这也就意味着,普通上传时需要读取并加密文件两次;另外由于InputStream流无法重复读取,流式上传不支持计算sha256。 |