Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

496
Vistas
¿Cómo puedo llamar a la función de descifrado de kms de AWS de Amazon sin usar un archivo binario?

Tengo un código que recupera una cadena que fue encriptada usando la función de encriptación aws kms de Amazon. Me gustaría llamar a aws kms decrypt para recuperar el valor sin cifrar, pero me gustaría hacerlo sin escribir la cadena en un archivo binario. Todos los ejemplos que he encontrado asumen que convertirá el valor cifrado codificado en base64 en un archivo binario utilizando el comando base64 de Linux o el comando certutil de Windows. Estoy tratando de hacer esto en un sistema Windows. Me parece que deberías poder ejecutar:

 aws kms encrypt --key-id <mykey> --plaintext "mysecret"

Lo que para mí genera este resultado:

 { "KeyId": "arn:aws:kms:us-east-1:192491131326:key/<mykey>", "CiphertextBlob": "AQICAHjQ7sViXQdeS4wWbFZpkOQWvCdNXqiy4Cnz0/xEBe39SQGz0vofeAo0+SyOXv172fqkAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhchHh0ugGzwRTC4gAgEQgCMlkhYlCYk2SfYIkfQ6ruwA71KBcN7ih/OPzSE86OT/eBOz3Q==" }

Y que entonces debería poder ejecutar:

 aws kms decrypt --ciphertext-blob AQICAHjQ7sViXQdeS4wWbFZpkOQWvCdNXqiy4Cnz0/xEBe39SQGz0vofeAo0+SyOXv172fqkAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhchHh0ugGzwRTC4gAgEQgCMlkhYlCYk2SfYIkfQ6ruwA71KBcN7ih/OPzSE86OT/eBOz3Q==

Para recuperar el resultado. Pero hasta ahora no he podido obtener nada excepto:

 An error occurred (InvalidCiphertextException) when calling the Decrypt operation:

¿Hay algún conjunto de parámetros que pueda pasar al comando de descifrado para que descifre esta cadena?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No estoy seguro si ya has encontrado esto, pero esto parece funcionar:

 aws kms decrypt --ciphertext-blob fileb://<(echo "{YOUR CIPHERTEXTBLOB HERE}" | base64 -d) --output text --query Plaintext --region {REGION} | base64 -d

Esto es para una Mac. En Windows creo que necesitas base64 -d.

Espero que esto ayude.

over 4 years ago · Santiago Trujillo Denunciar

0

Hago cosas con aws kms , así que quería una forma de trabajar con transmisiones en lugar de archivos. Definí 2 funciones en mi shell que también podrían incluirse en scripts. (Dejé los puntos y coma porque los tengo condensados en una sola línea en mi .bash_profile pero me gusta dividir las cosas cuando estoy "enseñando").

 export KMS_KEY=b31ef212-168e-4f7c-ab2a-fe8a623ee465 kmse(){ local key=${1:-$KMS_KEY}; aws kms encrypt \ --key-id $key \ --plaintext "$(cat /dev/stdin)" \ --query CiphertextBlob \ --output text; } kmsd(){ aws kms decrypt \ --ciphertext-blob fileb://<( \ cat /dev/stdin | \ sed 's/.*kmscrypt:://' | \ tr -d '\n' | \ base64 -D ) \ --output text \ --query Plaintext | \ base64 -D; }

La función kmse toma un argumento de opciones que es el UUID de la clave a usar. De lo contrario, utiliza la clave especificada en el entorno KMS_KEY var. Ambas funciones leen /dev/stdin para obtener lo que necesita cifrarse/descifrarse. Por lo tanto, los siguientes ejemplos funcionan todos:

 ## Encrypting $ tar -czf - /etc | kmse > etc.tgz.encrypted $ kmse 77ed1d23-6013-47ce-b48a-2a968ef0ddaa < ~/.ssh/id_rsa > id_rsa.pem.encrypted $ cat | kmse | netcat 10.0.0.123 8080 <content_pasted_from_my_clipboard> ^D ## Decrypting $ kmsd < etc.tgz.encrypted | tar -zxf - $ kmsd < id_rsa.pem.encrypted > ~/.ssh/id_rsa.pem $ cat | kmsd | tee output.txt <content_pasted_from_my_clipboard> ^D # Note: ^D is a CTRL-D character that tells `cat` this is the End Of File.

Mientras que la pasta para cat CTRL-D es un truco genial. Tengoun script llamado cb que uso para obtener datos dentro y fuera de mi portapapeles a través de stdin y stdout. ¡Y ahora funciona en Mac, Linux, Windows Cygwin y Windows WSL! Entonces, puedo cifrar y descifrar lo que está en mi portapapeles con:

 ## Encrypt $ cb | kmse | cb ## Decrypt $ cb | kmsd | cb

Un concepto similar que es específico de Mac OSX es:

 ## Encrypt $ pbpaste | kmse | pbcopy ## Decrypt $ pbpaste | kmsd | pbcopy
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda