Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda> Data Encryption Workshop> Referencia de la API> Ejemplos de aplicación> Ejemplo 2: Encriptación o desencriptación de grandes volúmenes de datos
Actualización más reciente 2022-11-03 GMT+08:00

Ejemplo 2: Encriptación o desencriptación de grandes volúmenes de datos

Escenario

Encriptación o desencriptación de grandes volúmenes de datos.

  • Proceso de encriptación:
    1. Cree un CMK en KMS.
    2. Llame a la API create-datakey del KMS para crear un DEK. Se generarán un DEK de texto sin formato y un DEK de texto cifrado. El DEK de texto cifrado se generó usando un CMK para cifrar el DEK de texto sin formato.
    3. Utilice el DEK de texto sin formato para cifrar un archivo de texto sin formato, generando un archivo de texto cifrado.
    4. Almacene el DEK de texto cifrado y el archivo de texto cifrado juntos en un dispositivo de almacenamiento permanente o en un servicio de almacenamiento.
  • Proceso de descifrado:
    1. Lea el DEK de texto cifrado y el archivo de texto cifrado desde el dispositivo de almacenamiento permanente o servicio de almacenamiento.
    2. Llame a la API decrypt-datakey y use el CMK de encriptación para descifrar el texto encriptación DEK. Se generará el DEK de texto sin formato.

      Si se elimina el CMK, el descifrado fallará. Mantenga sus CMK correctamente.

    3. Utilice el DEK de texto sin formato para descifrar el archivo de texto cifrado.

APIs involucradas

Las API utilizadas para las siguientes operaciones están involucradas:

Procedimiento

  1. Cree un CMK.

    • Información de API

      Formato URI: POST /v1.0/{project_id}/kms/create-key

      Para obtener más información, consulte Creación de un CMK.

      Default Master Keys son creadas por servicios integrados con KMS. Los nombres de las claves maestras predeterminadas terminan en /default. No termine sus nombres CMK con /default.

    • Ejemplo de solicitud

      POST: https://{endpoint}/v1.0/53d1aefc533f4ce9a59c26b01667cbcf/kms/create-key

      Obtenga {endpoint} de Regiones y Puntos de conexión.

      Body:

      {
          "key_alias": "test"
      }
    • Ejemplo de respuesta
      {
          "key_info": {
              "key_id": "bb6a3d22-dc93-47ac-b5bd-88df7ad35f1e",
              "domain_id": "b168fe00ff56492495a7d22974df2d0b"
          }
      }

  2. Crear un DEK.

    • Información de API

      Formato URI: POST /v1.0/{project_id}/kms/create-datakey

      Para obtener más información, consulte Creación de un DEK.

    • Ejemplo de solicitud

      POST https://{endpoint}/v1.0/53d1aefc533f4ce9a59c26b01667cbcf/kms/create-datakey

      Obtenga {endpoint} de Regiones y Puntos de conexión.

      Puede utilizar la API para consultar la lista de CMK para comprobar la información clave, incluido key_id.

      Body:

      {
          "key_id": "0d0466b0-e727-4d9c-b35d-f84bb474a37f",
          "datakey_length": "512"
      }
    • Ejemplo de respuesta
      {
          "key_id": "0d0466b0-e727-4d9c-b35d-f84bb474a37f",
          "plain_text": "8151014275E426C72EE7D44267EF11590DCE0089E19863BA8CC832187B156A72A5A17F17B5EF0D525872C59ECEB72948AF85E18427F8BE0D46545C979306C08D",
          "cipher_text": "020098009EEAFCE122CAA5927D2E020086F9548BA1675FDB022E4ECC01B96F2189CF4B85E78357E73E1CEB518DAF7A4960E7C7DE8885ED3FB2F1471ABF400119CC1B20BD3C4A9B80AF590EFD0AEDABFDBB0E2B689DA7B6C9E7D3C5645FCD9274802586BE63779471F9156F2CDF07CD8412FFBE9230643034363662302D653732372D346439632D623335642D6638346262343734613337660000000045B05321483BD9F9561865EE7DFE9BE267A42EB104E98C16589CE46940B18E52"
      }

  3. Cifrar el DEK.

    • Información de API

      Formato URI: POST /v1.0/{project_id}/kms/create-datakey

      Para obtener más información, consulte Encriptación de un DEK.

    • Ejemplo de solicitud

      POST https://{endpoint}/v1.0/53d1aefc533f4ce9a59c26b01667cbcf/kms/encrypt-datakey

      Obtenga {endpoint} de Regiones y Puntos de conexión.

      Puede utilizar la API para consultar la lista de CMK para comprobar la información clave, incluido key_id.

      Body:

      {
          "key_id": "0d0466b0-e727-4d9c-b35d-f84bb474a37f",
          "plain_text": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5A5FD42D16A20302798EF6ED309979B43003D2320D9F0E8EA9831A92759FB4B",
          "datakey_plain_length": "64"
      }
    • Ejemplo de respuesta
      {
          "key_id": "0d0466b0-e727-4d9c-b35d-f84bb474a37f",
          "cipher_text": "020098005273E14E6E8E95F5463BECDC27E80AF820B9FC086CB47861899149F67CF07DAFF2810B7D27BDF19AB7632488E0926A48DB2FC85BEA905119411B46244C5E6B8036C60A0B0B4842FFE6994518E89C19B1C1D688D9043BCD6053EA7BA0652642CE59F2543C80669139F4F71ABB9BD9A24330643034363662302D653732372D346439632D623335642D66383462623437346133376600000000D34457984F9730D57F228C210FD22CA6017913964B21D4ECE45D81092BB9112E",
          "datakey_length": "64"
      }

  4. Descifrar el DEK.

    • Información de API

      Formato URI: POST /v1.0/{project_id}/kms/decrypt-datakey

      Para obtener más información, consulte Desencriptación de un DEK.

    • Ejemplo de solicitud

      POST https://{endpoint}/v1.0/53d1aefc533f4ce9a59c26b01667cbcf/kms/decrypt-datakey

      Obtenga {endpoint} de Regiones y Puntos de conexión.

      Puede utilizar la API para consultar la lista de CMK para comprobar la información clave, incluido key_id.

      Body:

      {
          "key_id": "0d0466b0-e727-4d9c-b35d-f84bb474a37f",
          "datakey_cipher_length": "64",
          "cipher_text": "020098005273E14E6E8E95F5463BECDC27E80AF820B9FC086CB47861899149F67CF07DAFF2810B7D27BDF19AB7632488E0926A48DB2FC85BEA905119411B46244C5E6B8036C60A0B0B4842FFE6994518E89C19B1C1D688D9043BCD6053EA7BA0652642CE59F2543C80669139F4F71ABB9BD9A24330643034363662302D653732372D346439632D623335642D66383462623437346133376600000000D34457984F9730D57F228C210FD22CA6017913964B21D4ECE45D81092BB9112E"
      }
    • Ejemplo de respuesta
      {
          "data_key": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
          "datakey_length": "64",
          "datakey_dgst": "F5A5FD42D16A20302798EF6ED309979B43003D2320D9F0E8EA9831A92759FB4B"
      }