Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Nome

Tipo

Descrição

Obrigatório

Referência

nCipherID

numérico

Código identificador do modo do algoritmo AES a ser usado na decriptação.

X


cCipherText

caractere

Texto de entrada a ser decriptado.

X


cKey

caractere

Key da decriptação, conforme o modo do algoritmo AES a ser usado.

X


cIV

caractere

IV (Vetor de Inicialização) da decriptação, conforme o modo do algoritmo AES a ser usado. Obrigatório para o modo CBC.



...

  • Exemplo 1: criptografia AES-128 CBC usando key gerada a partir do password fornecido e IV gerado randômico:

    Bloco de código
    languagecpp
    themeEclipse
    linenumberstrue
    collapsefalse
    User Function ExeAES1()
    
      Local nCipherID   := 0                    // AES-128 CBC
      Local cPlainText  := "input<Texto plainde textentrada>"
      Local cPassword   := "password"
    //Local cKeyInput   := "1234567890123456"   // NÃO USAR: APENAS PARA EXEMPLO!!!
    //Local cIVInput    := "6543210987654321"   // NÃO USAR: APENAS PARA EXEMPLO!!!<Texto auxiliar na geração da key da encriptação>"
      Local cKeyUsed    := ""
      Local cIVUsed     := ""
      Local cCipherText := ""
      Local aResEnc     := {}
      Local aResDec     := {}
    
      aResEnc := AESEncrypt( nCipherID, cPlainText, cPassword )
      
      VarInfo( "AESEncrypt", aResEnc )
    
      // AESEncrypt -> ARRAY (    4) [...]
      //      AESEncrypt[1] -> N (   15) [         0.0000]
      //      AESEncrypt[2] -> C (   32) [<texto_ascii_com_32_bytes><Texto de saída da encriptação>]
      //      AESEncrypt[3] -> C (   16) [<texto_ascii_com_16_bytes><Key usada na encriptação, derivada a partir do password pela função de encriptação>]
      //      AESEncrypt[4] -> C (   16) [<texto_ascii_com_16_bytes><IV usado na encriptação, gerado randomicamente pela função de encriptação>]
    
      cCipherText := aResEnc[2]
      cKeyUsed    := aResEnc[3]
      cIVUsed     := aResEnc[4]
    
      aResDec := AESDecrypt( nCipherID, cCipherText, cKeyUsed, cIVUsed )
      
      VarInfo( "AESDecrypt", aResDec )
    
      // AESDecrypt -> ARRAY (    2) [...]
      //      AESDecrypt[1] -> N (   15) [         0.0000]
      //      AESDecrypt[2] -> C (   16) [input plain text<Texto de saída da decriptação, idêntico ao texto de entrada>]
    
    Return
    
  • Exemplo 2: criptografia AES-128 CBC usando key fornecida e IV fornecido:

    Bloco de código
    languagecpp
    themeEclipse
    linenumberstrue
    collapsefalse
    User Function ExeAES2()
    
      Local nCipherID   := 0                    // AES-128 CBC
      Local cPlainText  := "input<Texto plain text"
    //Local cPassword   := "password"de entrada>"
      Local cKeyInput   := "1234567890123456"   // NÃO USAR: APENAS PARA EXEMPLO!!!<Key a ser usada na encriptação e na decriptação, gerada previamente>"
      Local cIVInput    := "6543210987654321"   // NÃO USAR: APENAS PARA EXEMPLO!!!<IV a ser usado na encriptação e na decriptação, gerado previamente>"
      Local cKeyUsed    := ""
      Local cIVUsed     := ""
      Local cCipherText := ""
      Local aResEnc     := {}
      Local aResDec     := {}
    
      aResEnc := AESEncrypt( nCipherID, cPlainText, , cKeyInput, cIVInput )
      
      VarInfo( "AESEncrypt", aResEnc )
    
      // AESEncrypt -> ARRAY (    4) [...]
      //      AESEncrypt[1] -> N (   15) [         0.0000]
      //      AESEncrypt[2] -> C (   32) [<texto_ascii_com_32_bytes><Texto de saída da encriptação>]
      //      AESEncrypt[3] -> C (   16) [1234567890123456<Key usada na encriptação, gerada previamente>]
      //      AESEncrypt[4] -> C (   16) [6543210987654321<IV usado na encriptação, gerado previamente>]
    
      cCipherText := aResEnc[2]
      cKeyUsed    := aResEnc[3]
      cIVUsed     := aResEnc[4]
    
      aResDec := AESDecrypt( nCipherID, cCipherText, cKeyUsed, cIVUsed )
      
      VarInfo( "AESDecrypt", aResDec )
    
      // AESDecrypt -> ARRAY (    2) [...]
      //      AESDecrypt[1] -> N (   15) [         0.0000]
      //      AESDecrypt[2] -> C (   16) [input plain text<Texto de saída da decriptação, idêntico ao texto de entrada>]
    
    Return
    

Abrangência

AppServer 17.3.0.16

...