{"meta":{"title":"Cifrado de secretos para la API de REST","intro":"Para crear o actualizar un secreto con la API de REST, debe cifrar el valor del secreto.","product":"REST API","breadcrumbs":[{"href":"/es/enterprise-cloud@latest/rest","title":"REST API"},{"href":"/es/enterprise-cloud@latest/rest/guides","title":"Guías"},{"href":"/es/enterprise-cloud@latest/rest/guides/encrypting-secrets-for-the-rest-api","title":"Cifrado de secretos"}],"documentType":"article"},"body":"# Cifrado de secretos para la API de REST\n\nPara crear o actualizar un secreto con la API de REST, debe cifrar el valor del secreto.\n\n## Acerca del cifrado de secretos\n\nVarios puntos de conexión de API REST te permiten crear secretos en GitHub. Para usar estos puntos de conexión, debe cifrar el valor del secreto mediante libsodium. Para más información, consulte la [documentación sobre libsodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages).\n\nPara cifrar un secreto, necesitas una clave pública codificada en Base64. Puede obtener una clave pública de la API de REST. Para determinar qué punto de conexión se va a usar para obtener la clave pública, consulte la documentación del parámetro `encrypted_value` en el punto de conexión que usará para crear un secreto.\n\n## Ejemplo para cifrar un secreto mediante Node.js\n\nSi usa Node.js, puede cifrar el secreto mediante la biblioteca libsodium-wrappers. Para más información, consulte: [libsodium-wrappers](https://www.npmjs.com/package/libsodium-wrappers).\n\nEn el ejemplo siguiente, reemplace `YOUR_SECRET` por el valor de texto sin formato que desea cifrar. Reemplace `YOUR_BASE64_KEY` por la clave pública codificada en Base64. La documentación del punto de conexión que va a usar para crear un secreto te indicará qué punto de conexión puede usar para obtener la clave pública. \n`ORIGINAL` no es un marcador de posición; es un parámetro para la biblioteca libsodium-wrappers.\n\n```javascript copy\nconst sodium = require('libsodium-wrappers')\n\nconst secret = 'YOUR_SECRET'\nconst key = 'YOUR_BASE64_KEY'\n\n//Check if libsodium is ready and then proceed.\nsodium.ready.then(() => {\n  // Convert the secret and key to a Uint8Array.\n  let binkey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL)\n  let binsec = sodium.from_string(secret)\n\n  // Encrypt the secret using libsodium\n  let encBytes = sodium.crypto_box_seal(binsec, binkey)\n\n  // Convert the encrypted Uint8Array to Base64\n  let output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL)\n\n  // Print the output\n  console.log(output)\n});\n```\n\n## Ejemplo de cifrado de un secreto mediante Python\n\nSi usa Python 3, puede cifrar el secreto mediante la biblioteca PyNaCl. Para más información, consulta [PyNaCl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox).\n\nEn el ejemplo siguiente, reemplace `YOUR_SECRET` por el valor de texto sin formato que desea cifrar. Reemplace `YOUR_BASE64_KEY` por la clave pública codificada en Base64. La documentación del punto de conexión que va a usar para crear un secreto te indicará qué punto de conexión puede usar para obtener la clave pública.\n\n```python copy\nfrom base64 import b64encode\nfrom nacl import encoding, public\n\ndef encrypt(public_key: str, secret_value: str) -> str:\n  \"\"\"Encrypt a Unicode string using the public key.\"\"\"\n  public_key = public.PublicKey(public_key.encode(\"utf-8\"), encoding.Base64Encoder())\n  sealed_box = public.SealedBox(public_key)\n  encrypted = sealed_box.encrypt(secret_value.encode(\"utf-8\"))\n  return b64encode(encrypted).decode(\"utf-8\")\n\nencrypt(\"YOUR_BASE64_KEY\", \"YOUR_SECRET\")\n```\n\n## Ejemplo de cifrado de un secreto mediante C#\n\nSi usa C#, puede cifrar el secreto mediante el paquete Sodium.Core. Para más información, consulte [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/).\n\nEn el ejemplo siguiente, reemplace `YOUR_SECRET` por el valor de texto sin formato que desea cifrar. Reemplace `YOUR_BASE64_KEY` por la clave pública codificada en Base64. La documentación del punto de conexión que va a usar para crear un secreto te indicará qué punto de conexión puede usar para obtener la clave pública.\n\n```csharp copy\nvar secretValue = System.Text.Encoding.UTF8.GetBytes(\"YOUR_SECRET\");\nvar publicKey = Convert.FromBase64String(\"YOUR_BASE64_KEY\");\n\nvar sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);\n\nConsole.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));\n```\n\n## Ejemplo de cifrado de un secreto mediante Ruby\n\nSi usa Ruby, puede cifrar el secreto mediante la gema de RbNaCl. Para más información, consulte [RbNaCl](https://github.com/RubyCrypto/rbnacl).\n\nEn el ejemplo siguiente, reemplace `YOUR_SECRET` por el valor de texto sin formato que desea cifrar. Reemplace `YOUR_BASE64_KEY` por la clave pública codificada en Base64. La documentación del punto de conexión que va a usar para crear un secreto te indicará qué punto de conexión puede usar para obtener la clave pública.\n\n```ruby copy\nrequire \"rbnacl\"\nrequire \"base64\"\n\nkey = Base64.decode64(\"YOUR_BASE64_KEY\")\npublic_key = RbNaCl::PublicKey.new(key)\n\nbox = RbNaCl::Boxes::Sealed.from_public_key(public_key)\nencrypted_secret = box.encrypt(\"YOUR_SECRET\")\n\n# Print the base64 encoded secret\nputs Base64.strict_encode64(encrypted_secret)\n```"}