# alibabacloud-dkms-transfer-java-sdk **Repository Path**: mirrors_aliyun/alibabacloud-dkms-transfer-java-sdk ## Basic Information - **Project Name**: alibabacloud-dkms-transfer-java-sdk - **Description**: Alibaba Cloud Dedicated KMS Transfer SDK for Java can help Java developers to migrate from the KMS keys to the Dedicated KMS keys. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-30 - **Last Updated**: 2025-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 阿里云专属KMS适配Java SDK ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg) 阿里云专属KMS适配Java SDK可以帮助Java开发者快速完成由KMS密钥向专属KMS密钥迁移适配工作。你可以通过***Maven***快速使用。 *其他语言版本: [English](README.md), [简体中文](README.zh-cn.md)* - [阿里云专属KMS主页](https://help.aliyun.com/document_detail/311016.html) - [代码示例](/examples) - [Issues](https://github.com/aliyun/alibabacloud-dkms-transfer-java-sdk/issues) - [Release](https://github.com/aliyun/alibabacloud-dkms-transfer-java-sdk/releases) ## 许可证 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html) ## 优势 * 专属KMS提供租户独享的服务实例,并部署到租户的VPC内,满足私有网络接入需求。 * 专属KMS使用租户独享的密码资源池(HSM集群),实现资源隔离和密码学隔离,以获得更高的安全性。 * 专属KMS可以降低使用HSM的复杂度,为您的HSM提供稳定、易用的上层密钥管理途径和密码计算服务。 * 专属KMS可以将您的HSM与云服务无缝集成,为云服务加密提供更高的安全性和可控制性。更多信息,请参见[支持服务端集成加密的云服务](https://help.aliyun.com/document_detail/141499.htm?#concept-2318937)。 * 减低用户从共享KMS密钥移专属KMS密钥的成本 ## 软件要求 - Java 1.8 或以上版本 - Maven ## 安装 可以通过Maven的方式在项目中使用专属KMS适配Java客户端。导入方式如下: ``` com.aliyun.kms kms-transfer-client 0.2.2 ``` ## 构建 你可以从Github检出代码通过下面的maven命令进行构建。 ``` mvn clean install -DskipTests -Dgpg.skip=true ``` ## 客户端机制 阿里云专属KMS适配Java SDK默认将下面列表方法请求转发给专属KMS VPC网关。 * Encrypt * Decrypt * GenerateDataKey * GenerateDataKeyWithoutPlaintext * GetPublicKey * AsymmetricEncrypt * AsymmetricDecrypt * AsymmetricSign * AsymmetricVerify * GetSecretValue ## 示例代码 ```Java import com.aliyun.dkms.gcs.openapi.models.Config; import com.aliyun.kms.KmsTransferAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.HttpClientConfig; import com.aliyuncs.kms.model.v20160120.EncryptRequest; import com.aliyuncs.kms.model.v20160120.EncryptResponse; import com.aliyuncs.profile.DefaultProfile; public class EncryptSample { public static void main(String[] args) { encrypt(); } public static void encrypt() { Config config = new Config(); config.setProtocol("https"); config.setClientKeyFile(""); config.setPassword(""); config.setEndpoint(""); // 如需验证服务端证书,这里需要设置为您的服务端证书路径 config.setCaFilePath(""); // 或者,设置为您的服务端证书内容 //config.setCa("", System.getenv(""), System.getenv("")); HttpClientConfig clientConfig = HttpClientConfig.getDefault(); //如需跳过https认证,可打开此处注释代码 //clientConfig.setIgnoreSSLCerts(true); profile.setHttpClientConfig(clientConfig); IAcsClient client = new KmsTransferAcsClient(profile, config); EncryptRequest request = new EncryptRequest(); request.setKeyId(""); request.setPlaintext(""); try { EncryptResponse response = client.getAcsResponse(request); System.out.printf("KeyId: %s%n", response.getKeyId()); System.out.printf("KeyVersionId: %s%n", response.getKeyVersionId()); System.out.printf("CiphertextBlob: %s%n", response.getCiphertextBlob()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } } } ```