すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:データ暗号化のサンプルコード

最終更新日:Jan 20, 2025

Advanced Encryption Standard (AES) またはSM4カスタマーマスターキー (CMK) を作成した後、key Management Service (KMS) SDKのコードを使用してデータを暗号化できます。 このトピックの例では、KMS SDK for Javaを使用してデータを暗号化します。

準備

  1. KMS SDK for Javaの依存関係宣言を取得します。 必要なSDKバージョンの詳細については、「SDKの概要」をご参照ください。 サンプルコード:

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.2</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-kms</artifactId>
        <version>2.14.0</version>
    </dependency>
  2. KMSの領域に基づいてKMSのエンドポイントを取得します。 詳細については、「Make API requests」をご参照ください。

    説明

    この例では、KMSのパブリックエンドポイントにアクセスするリージョンIDを指定できます。 KMSの仮想プライベートクラウド (VPC) アドレスにアクセスする方法の詳細については、「KMS SDK For Javaの使用例」をご参照ください。

データの暗号化

KMS SDK for Javaの次のコードを使用してデータを暗号化します。

説明

Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 AccessKeyペアを使用して操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。プロジェクトコードにAccessKey IDとAccessKey Secretを保存しないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウントに属するすべてのリソースのセキュリティが侵害される可能性があります。

この例では、AccessKeyペアは、ID認証を実装するためにALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数に保存されます。

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

import java.io.UnsupportedEncodingException;

import com.aliyuncs.kms.model.v20160120.*;
import com.aliyuncs.utils.Base64Helper;

public class Encrypt {

    public static void main(String[] args) {
        /*
         * 1. Specify the region where your CMK resides. 
         * 2. Specify the AccessKey ID and AccessKey secret that are required to access KMS. 
         */
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        IAcsClient client = new DefaultAcsClient(profile);

        try {
            EncryptRequest request = new EncryptRequest();
            // Specify the CMK alias or CMK ID that is used to encrypt "Hello world". 
            request.setKeyId("alias/Apollo/SalaryEncryptionKey");
            request.setPlaintext(Base64Helper.encode("Hello world", null));

            EncryptResponse response = client.getAcsResponse(request);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException | UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }
    }
}

サンプルコードの詳細については、alibabacloud-kms-demoをご参照ください。