- Categorias:
TRY_DECRYPT_RAW¶
Uma versão especial de DECRYPT_RAW que retorna um valor NULL se ocorrer um erro durante a descriptografia.
- Consulte também:
ENCRYPT , ENCRYPT_RAW , DECRYPT , TRY_DECRYPT , DECRYPT_RAW
Sintaxe¶
TRY_DECRYPT_RAW( <value_to_decrypt> , <key> , <iv> ,
[ [ [ <additional_authenticated_data> , ] <encryption_method> , ] <aead_tag> ]
)
Argumentos¶
Obrigatório:
value_to_decrypt
O valor binário a ser descriptografado.
key
A chave a ser usada para criptografar/descriptografar os dados. A chave deve ser um valor BINARY. A chave pode ser de qualquer valor desde que o comprimento esteja correto. Por exemplo, para AES128, a chave deve ser 128 bits (16 bytes), e para AES256, a chave deve ser 256 bits (32 bytes).
A chave usada para criptografar o valor deve ser usada para descriptografar o valor.
iv
Este parâmetro contém o vetor de inicialização (IV) a ser usado para criptografar e descriptografar esta parte do dado. O IV deve ser um valor BINARY de um comprimento específico:
Para GCM, este campo deve ser 96 bits (12 bytes). Enquanto o método de criptografia GCM permite que este campo tenha um tamanho diferente, o Snowflake atualmente oferece suporte apenas a 96 bits.
Para CCM, isto deve ser 56 bits (7 bytes).
Para ECB, este parâmetro é desnecessário.
Para todos os outros modos de criptografia suportados, isto deve ser 128 bits (16 bytes).
Este valor é usado para inicializar a primeira rodada de criptografia. Nunca se deve usar a mesma combinação de IV e chaves mais de uma vez, especialmente para modos de criptografia como GCM.
Se este parâmetro for definido como NULL, a implementação escolherá um novo IV pseudoaleatório durante cada chamada.
Opcional:
additional_authenticated_data
Dados autenticados adicionais (AAD) são dados adicionais cuja confidencialidade e autenticidade são asseguradas durante o processo de descriptografia. Entretanto, este AAD não é criptografado e não está incluído como campo no valor retornado da função ENCRYPT ou ENCRYPT_RAW.
Se AAD for passado para a função de criptografia (ENCRYPT ou ENCRYPT_RAW), então o mesmo AAD deve ser passado para a função de descriptografia (DECRYPT ou DECRYPT_RAW). Se AAD passado para a função de descriptografia não corresponder ao AAD passado para a função de criptografia, então a descriptografia falha.
A diferença entre o AAD e o
passphrase
é que a frase secreta deve ser mantida em segredo (caso contrário, a criptografia é essencialmente inútil), enquanto o AAD pode ser deixado público. O AAD ajuda a autenticar que uma informação pública e um valor criptografado estão associados uns aos outros. A seção de exemplos na função ENCRYPT inclui um exemplo mostrando o comportamento quando o AAD é correspondente e o comportamento quando não é correspondente.Para ENCRYPT_RAW e DECRYPT_RAW, o tipo de dados do AAD deve ser BINARY. Para ENCRYPT e DECRYPT, o tipo de dados do AAD pode ser VARCHAR ou BINARY, e não precisa corresponder ao tipo de dados do valor que foi criptografado.
AAD é suportado somente por modos de criptografia habilitados para AEAD, como GCM (padrão).
encryption_method
Esta cadeia de caracteres especifica o método a ser usado para criptografar/descriptografar os dados. Esta cadeia de caracteres contém subcampos:
<algorithm>-<mode> [ /pad: <padding> ]
O
algorithm
está atualmente limitado a:'AES'
: quando uma senha é passada (por exemplo, para ENCRYPT), a função usa criptografia AES-256 (256 bits). Quando uma chave é passada (por exemplo, para ENCRYPT_RAW), a função usa criptografia de 128, 192 ou 256 bits, dependendo do comprimento da chave.
O
algorithm
não diferencia maiúsculas e minúsculas.O
mode
especifica que modo de codificação de bloco deve ser usado para criptografar mensagens. A tabela a seguir mostra quais modos são suportados, e quais desses modos suportam o preenchimento:Modo
Preenchimento
Descrição
'ECB'
Sim
Criptografar cada bloco individualmente com a chave. Este modo é geralmente desencorajado e está incluído apenas para compatibilidade com implementações externas.
'CBC'
Sim
O bloco criptografado é XORed com o bloco anterior.
'GCM'
Não
O Modo Galois/Contador é um modo de criptografia de alto desempenho habilitado para AEAD. AEAD também garante a autenticidade e a confidencialidade dos dados criptografados, gerando uma tag AEAD. Além disso, AEAD oferece suporte a AAD (dados autenticados adicionais).
'CTR'
Não
Modo contador.
'OFB'
Não
Feedback de saída. O texto cifrado é XORed com o texto sem formatação de um bloco.
'CFB'
Não
O feedback da cifra é uma combinação de OFB e CBC.
O
mode
não diferencia maiúsculas e minúsculas.O
padding
especifica como preencher mensagens cujo comprimento não seja múltiplo do tamanho do bloco. O preenchimento é aplicável somente para os modos ECB e CBC; o preenchimento é ignorado para outros modos. Os valores possíveis para o preenchimento são:'PKCS'
: utiliza PKCS5 para preenchimento de blocos.'NONE'
: sem preenchimento. O usuário precisa cuidar do preenchimento ao usar o modo ECB ou CBC.
O
padding
não diferencia maiúsculas e minúsculas.Configuração padrão:
'AES-GCM'
.Se o
mode
não for especificado, é utilizado GCM.Se o
padding
não for especificado, é utilizado PKCS.
aead_tag
Este valor BINARY é necessário para modos de descriptografia habilitados para AEAD para verificar a autenticidade e a confidencialidade dos dados criptografados. Use a tag AEAD retornada pela função ENCRYPT_RAW. Um exemplo abaixo mostra como acessar e utilizar este valor.
Retornos¶
A função retorna o valor descriptografado ou um valor NULL se ocorrer algum erro de tempo de execução durante a descriptografia. O tipo de dados do valor retornado é BINARY.
Notas de uso e exemplos¶
Consulte a função DECRYPT_RAW para notas de uso e exemplos.