Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo Decrypt con un AWS SDK o una CLI
Gli esempi di codice seguenti mostrano come utilizzare Decrypt.
Gli esempi di operazioni sono estratti di codice da programmi più grandi e devono essere eseguiti nel contesto. È possibile visualizzare questa operazione nel contesto nel seguente esempio di codice:
- CLI
-
- AWS CLI
-
Esempio 1: come decrittografare un messaggio crittografato con una chiave KMS simmetrica (Linux e macOS)
Il seguente esempio di
decryptcomando mostra il metodo consigliato per decrittografare i dati con la CLI. AWS Questa versione mostra come decrittografare i dati con una chiave KMS simmetrica.Fornisci il testo criptato in un file. Nel valore del parametro
--ciphertext-blob, utilizza il prefissofileb://per indicare alla CLI di leggere i dati da un file binario. Se il file non è presente nella directory corrente, digita il percorso completo del file. Per ulteriori informazioni sulla lettura dei valori dei parametri AWS CLI da un file, consulta Loading AWS CLI parameters from a file < https://docs.aws.amazon.com/cli/ latest/userguide/cli - usage-parameters-file .html> nella Command Line Interface User Guide e Best Practices for Local File Parameters< https://aws.amazon.com/blogs/ developer/ best-practices-for-local -file-parameters/> nel AWS Command Line Tool Blog .Specificare la chiave KMS per decrittografare il CipherText.Il AWS parametro non è necessario quando si esegue la decrittografia con una chiave KMS simmetrica.--key-idAWS KMS può ottenere l'ID della chiave KMS utilizzata per crittografare i dati dai metadati nel testo cifrato. Tuttavia è sempre consigliabile specificare la chiave KMS che stai utilizzando. Questa procedura consente di utilizzare la chiave KMS desiderata e impedire di decrittografare inavvertitamente un testo criptato utilizzando una chiave KMS non attendibile. Richiedi l’output in testo normale come valore di testo. Il parametro--queryindica alla CLI di recuperare solo il valore del campoPlaintextdall’output. Il parametro--outputrestituisce l’output come testo. Procedi a decrittografare in formato Base64 il testo normale e a salvarlo in un file. Nell’esempio seguente il valore del parametroPlaintextviene inviato (|) all’utilità Base64, che lo decodifica. Quindi, reindirizza (>) l’output decodificato al fileExamplePlaintext.Prima di eseguire questo comando, sostituisci l'ID della chiave di esempio con un ID chiave valido del tuo account. AWS
aws kms decrypt \ --ciphertext-blobfileb://ExampleEncryptedFile\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab\ --outputtext\ --queryPlaintext|base64\ --decode>ExamplePlaintextFileQuesto comando non produce alcun output. L’output del comando
decryptviene decrittografato in formato Base64 e salvato in un file.Per ulteriori informazioni, consulta Decrypt nel riferimento API del Servizio AWS di gestione delle chiavi.
Esempio 2: come decrittografare un messaggio crittografato con una chiave KMS simmetrica (prompt dei comandi di Windows)
L’esempio seguente è lo stesso del precedente, tranne per il fatto che utilizza l’utilità
certutilper decrittografato in formato Base64 i dati del testo normale. Questa procedura richiede due comandi, come illustrato negli esempi seguenti.Prima di eseguire questo comando, sostituisci l'ID della chiave di esempio con un ID chiave valido del tuo AWS account.
aws kms decrypt^--ciphertext-blobfileb://ExampleEncryptedFile^--key-id1234abcd-12ab-34cd-56ef-1234567890ab^--outputtext^--queryPlaintext>ExamplePlaintextFile.base64Esegui il comando
certutil.certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFileOutput:
Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.Per ulteriori informazioni, consulta Decrypt nel riferimento API del Servizio AWS di gestione delle chiavi.
Esempio 3: come decrittografare un messaggio crittografato con una chiave KMS asimmetrica (Linux e macOS)
Il seguente esempio di comando
decryptmostra come decrittografare i dati crittografati con una chiave KMS asimmetrica RSA.Quando si utilizza una chiave KMS asimmetrica, il parametro
encryption-algorithmobbligatorio specifica l’algoritmo utilizzato per crittografare il testo normale.Prima di eseguire questo comando, sostituisci l'ID della chiave di esempio con un ID chiave valido del tuo AWS account.
aws kms decrypt \ --ciphertext-blobfileb://ExampleEncryptedFile\ --key-id0987dcba-09fe-87dc-65ba-ab0987654321\ --encryption-algorithmRSAES_OAEP_SHA_256\ --outputtext\ --queryPlaintext|base64\ --decode>ExamplePlaintextFileQuesto comando non produce alcun output. L’output del comando
decryptviene decrittografato in formato Base64 e salvato in un file.Per ulteriori informazioni, consulta Chiavi asimmetriche in AWS KMS nella Guida per gli sviluppatori del servizio di gestione delle AWS chiavi.
-
Per informazioni dettagliate sull’API, consulta Decrypt
in AWS CLI Command Reference.
-
- Java
-
- SDK per Java 2.x
-
Nota
C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS
. /** * Asynchronously decrypts the given encrypted data using the specified key ID. * * @param encryptedData The encrypted data to be decrypted. * @param keyId The ID of the key to be used for decryption. * @return A CompletableFuture that, when completed, will contain the decrypted data as a String. * If an error occurs during the decryption process, the CompletableFuture will complete * exceptionally with the error, and the method will return an empty String. */ public CompletableFuture<String> decryptDataAsync(SdkBytes encryptedData, String keyId) { DecryptRequest decryptRequest = DecryptRequest.builder() .ciphertextBlob(encryptedData) .keyId(keyId) .build(); CompletableFuture<DecryptResponse> responseFuture = getAsyncClient().decrypt(decryptRequest); responseFuture.whenComplete((decryptResponse, exception) -> { if (exception == null) { logger.info("Data decrypted successfully for key ID: " + keyId); } else { if (exception instanceof KmsException kmsEx) { throw new RuntimeException("KMS error occurred while decrypting data: " + kmsEx.getMessage(), kmsEx); } else { throw new RuntimeException("An unexpected error occurred while decrypting data: " + exception.getMessage(), exception); } } }); return responseFuture.thenApply(decryptResponse -> decryptResponse.plaintext().asString(StandardCharsets.UTF_8)); }-
Per i dettagli sull'API, consulta Decrypt in AWS SDK for Java 2.x API Reference.
-
- Kotlin
-
- SDK per Kotlin
-
Nota
C'è altro su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS
. suspend fun encryptData(keyIdValue: String): ByteArray? { val text = "This is the text to encrypt by using the AWS KMS Service" val myBytes: ByteArray = text.toByteArray() val encryptRequest = EncryptRequest { keyId = keyIdValue plaintext = myBytes } KmsClient.fromEnvironment { region = "us-west-2" }.use { kmsClient -> val response = kmsClient.encrypt(encryptRequest) val algorithm: String = response.encryptionAlgorithm.toString() println("The encryption algorithm is $algorithm") // Return the encrypted data. return response.ciphertextBlob } } suspend fun decryptData( encryptedDataVal: ByteArray?, keyIdVal: String?, ) { val decryptRequest = DecryptRequest { ciphertextBlob = encryptedDataVal keyId = keyIdVal } KmsClient { region = "us-west-2" }.use { kmsClient -> val decryptResponse = kmsClient.decrypt(decryptRequest) val myVal = decryptResponse.plaintext // Print the decrypted data. print(myVal) } }-
Per i dettagli sull'API, consulta Decrypt
in AWS SDK per il riferimento all'API Kotlin.
-
- PHP
-
- SDK per PHP
-
Nota
C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS
. /*** * @param string $keyId * @param string $ciphertext * @param string $algorithm * @return Result */ public function decrypt(string $keyId, string $ciphertext, string $algorithm = "SYMMETRIC_DEFAULT") { try{ return $this->client->decrypt([ 'CiphertextBlob' => $ciphertext, 'EncryptionAlgorithm' => $algorithm, 'KeyId' => $keyId, ]); }catch(KmsException $caught){ echo "There was a problem decrypting the data: {$caught->getAwsErrorMessage()}\n"; throw $caught; } }-
Per i dettagli sull'API, consulta Decrypt in AWS SDK per PHP API Reference.
-
- Python
-
- SDK per Python (Boto3)
-
Nota
C'è altro su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS
. class KeyEncrypt: def __init__(self, kms_client): self.kms_client = kms_client @classmethod def from_client(cls) -> "KeyEncrypt": """ Creates a KeyEncrypt instance with a default KMS client. :return: An instance of KeyEncrypt initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def decrypt(self, key_id: str, cipher_text: bytes) -> str: """ Decrypts text previously encrypted with a key. :param key_id: The ARN or ID of the key used to decrypt the data. :param cipher_text: The encrypted text to decrypt. :return: The decrypted text. """ try: return self.kms_client.decrypt(KeyId=key_id, CiphertextBlob=cipher_text)[ "Plaintext" ].decode() except ClientError as err: logger.error( "Couldn't decrypt your ciphertext. Here's why: %s", err.response["Error"]["Message"], ) raise-
Per i dettagli sull'API, consulta Decrypt in AWS SDK for Python (Boto3) API Reference.
-
- Ruby
-
- SDK per Ruby
-
Nota
C' GitHubè di più su. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS
. require 'aws-sdk-kms' # v2: require 'aws-sdk' # Decrypted blob blob = '01020200785d68faeec386af1057904926253051eb2919d3c16078badf65b808b26dd057c101747cadf3593596e093d4ffbf22434a6d00000068306606092a864886f70d010706a0593057020100305206092a864886f70d010701301e060960864801650304012e3011040c9d629e573683972cdb7d94b30201108025b20b060591b02ca0deb0fbdfc2f86c8bfcb265947739851ad56f3adce91eba87c59691a9a1' blob_packed = [blob].pack('H*') client = Aws::KMS::Client.new(region: 'us-west-2') resp = client.decrypt({ ciphertext_blob: blob_packed }) puts 'Raw text: ' puts resp.plaintext-
Per i dettagli sull'API, consulta Decrypt in AWS SDK per Ruby API Reference.
-
- Rust
-
- SDK per Rust
-
Nota
C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS
. async fn decrypt_key(client: &Client, key: &str, filename: &str) -> Result<(), Error> { // Open input text file and get contents as a string // input is a base-64 encoded string, so decode it: let data = fs::read_to_string(filename) .map(|input| { base64::decode(input).expect("Input file does not contain valid base 64 characters.") }) .map(Blob::new); let resp = client .decrypt() .key_id(key) .ciphertext_blob(data.unwrap()) .send() .await?; let inner = resp.plaintext.unwrap(); let bytes = inner.as_ref(); let s = String::from_utf8(bytes.to_vec()).expect("Could not convert to UTF-8"); println!(); println!("Decoded string:"); println!("{}", s); Ok(()) }-
Per i dettagli sull'API, consulta Decrypt
in AWS SDK for Rust API reference.
-
Per un elenco completo delle guide per sviluppatori AWS SDK e degli esempi di codice, consulta. Utilizzo di questo servizio con un AWS SDK Questo argomento include anche informazioni su come iniziare e dettagli sulle versioni precedenti dell'SDK.