客户端加密 SDK 是一个用于数据加密和解密的 Java算法库,支持多种加密算法和密钥管理策略。本 SDK 提供了简单易用的API,帮助开发者快速实现数据的安全加密和解密操作。
前提条件
已开通KMS包周期服务。
已完成应用接入点创建,获取KMS应用接入点地址。
已完成访问凭证AKSK创建。
已完成用户主密钥资源创建。
下载SDK
请点击下载SDK:客户端加密SDK.zip
安装与配置
STEP1 安装依赖
下载编译好的jar包,在项目根目录创建lib目录,并将jar包放入项目lib目录。
然后执行以下maven命令安装到本地仓库。
# 安装kms终端节点sdk
mvn install:install-file -Dfile=lib/ctyun-encryption-sdk-java-1.0.0.jar -DgroupId=cn.ctyun -DartifactId=ctyun-encryption-sdk-java -Dversion=1.0.0 -Dpackaging=jar
STEP2 添加依赖
安装完成之后在 pom.xml 中添加以下依赖:
<dependency>
<groupId>cn.ctyun</groupId>
<artifactId>ctyun-encryption-sdk-java</artifactId>
<version>1.0.0</version>
</dependency>
STEP3 配置文件
在项目资源目录resources的根目录下创建 crypto-config.yaml 文件,配置加密参数:
ctyun:
crypto:
useUniqueDataKeyPerEncrypt: true
keyProvider: KMS_CMK
local:
cmk: X0UawdOxtOMbt89jbznSEg==
kms:
ak: 09bc65a7aeea902c67dfa006c797795f
sk: 2e10dd702651e2442fe478f2d9777db5
endpoint: ip:port
cmkId: e64b31c0-3877-445f-9865-bce1b6aacdef
dekId: b0a116ed-de01-49bb-b2a7-4706fcd9b420
crypto-config.yaml配置详解
crypto-config.yaml是客户端加密 SDK 的配置文件,用于设置加密相关的参数。以下是配置文件的详细说明:
ctyun.crypto.useUniqueDataKeyPerEncrypt
类型:boolean
默认值:true
描述:指定是否每次加密时使用唯一的数据密钥。如果设置为true,则每次加密都会生成一个新的数据密钥;如果设置为false,则使用相同的数据密钥进行多次加密。
适用场景:适用于需要高安全性的场景,确保每次加密操作都使用不同的密钥。
ctyun.crypto.keyProvider
类型:string
默认值:KMS_CMK
描述:指定密钥提供者的类型。当前支持的值为KMS_CMK,表示使用 KMS(密钥管理服务)中的 CMK(客户主密钥)。LOCAL_CMK,表示从本地配置文件中读取CMK(客户主密钥)。
适用场景: 适用于用户按需进行配置使用 KMS 管理密钥或者本地管理密钥的场景。
ctyun.crypto.local.cmk
类型:string
描述:本地存储的客户主密钥(CMK),用于本地加密操作。该密钥需要以 Base64 编码形式提供。
适用场景:适用于本地加密操作,不需要依赖外部 KMS 服务的场景。
ctyun.crypto.kms.ak
类型:string
描述: KMS 服务的访问密钥(Access Key),用于身份验证。
适用场景: 适用于需要访问 KMS 服务的场景。
ctyun.crypto.kms.sk
类型:string
描述: KMS 服务的秘密密钥(Secret Key),用于身份验证。
适用场景: 适用于需要访问 KMS 服务的场景。
ctyun.crypto.kms.endpoint
类型: string
描述: KMS 服务的端点地址,格式为IP:Port。
适用场景: 适用于需要指定 KMS 服务地址的场景。
ctyun.crypto.kms.cmkId
类型: string
描述: KMS 服务中的客户主密钥(CMK)ID,用于标识特定的 CMK。
适用场景: 适用于需要指定特定 CMK 的场景,dekId与cmkId不可同时为空。
ctyun.crypto.kms.dekId
类型: string
描述: KMS 服务中的数据加密密钥(DEK)ID,用于标识特定的 DEK。
适用场景: 适用于需要指定特定 DEK 的场景,dekId与cmkId不可同时为空。
注意事项
确保ak和sk的安全性,避免泄露。
cmk和dekId需要与 KMS 服务中的实际密钥 ID 一致,且不能同时为空。
endpoint需要正确配置为可访问的 KMS 服务地址。