Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

498
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda