Cifrar com AES

Cifra ou decifra com AES. Uma impressão de sentido único é o gerador de hash

O que esta página cifra

AES é uma cifra de blocos. Esta página corre no navegador em ECB, CBC, CTR, OFB, CFB ou GCM, com uma chave de 16, 24 ou 32 bytes. Uma impressão de sentido único está no gerador de hash.

Como usar

  1. Cola a entrada. O modo começa em CBC, o preenchimento em pkcs7padding e o conjunto de caracteres em UTF-8.
  2. O formato da chave e do IV começa em Texto. A entrada começa em Texto e a saída em hex. ECB esconde o IV. GCM mostra o tamanho da etiqueta e AAD, e fixa nopadding.
  3. Cifrar cifra. Decifrar decifra. Mostrar exemplo enche hello, CBC, pkcs7padding, UTF-8, chave 1234567890abcdef, IV 1234567890abcdef e o hex 7e6347a62a0a976373e79b1bd586363d.
  4. Trocar copia o resultado para a entrada e põe o formato de entrada no formato acabado de sair. Põe o formato de saída em Texto e carrega em Decifrar. A mesma chave e o mesmo IV devolvem hello.
  5. Limpar tudo esvazia os campos e repõe CBC, pkcs7padding, UTF-8, formatos de texto e saída hex. Copiar resultado copia a saída.

Chave, IV, preenchimento e etiqueta

O texto passa a bytes com o conjunto de caracteres. hex e Base64 já são bytes, por isso o conjunto não se aplica. A chave tem de ficar com 16, 24 ou 32 bytes: AES-128, AES-192 ou AES-256. 1234567890abcdef em UTF-8 são 16 bytes.

CBC, CFB, OFB e CTR pedem um IV de 16 bytes. ECB não usa IV. GCM aceita qualquer IV não vazio; 12 bytes é o tamanho habitual. pkcs5padding e pkcs7padding aqui são iguais: acrescentam 1 a 16 bytes até um múltiplo de 16. nopadding não mexe nos bytes, por isso ECB e CBC exigem já esse múltiplo. GCM só permite nopadding.

A etiqueta GCM fica no fim do texto cifrado. O tamanho inicial é 128 bits. AAD é verificado e não é cifrado. Decifrar recusa entrada em texto, e Cifrar recusa saída em texto. Chave, IV, etiqueta ou preenchimento errados falham.

Onde se usa

  • Comparar um texto CBC com outra ferramenta AES.
  • Ler um GCM cuja etiqueta está no fim do hex.
  • Mudar a chave entre texto, hex e Base64.

Perguntas

Porque é que pkcs5 e pkcs7 são iguais aqui?

Os blocos AES têm 16 bytes. Os dois preenchimentos completam o último bloco com o mesmo byte de contagem.

O mesmo texto dá sempre o mesmo hex?

Sim, se o modo, o preenchimento, a chave e o IV não mudarem. Mostrar exemplo dá 7e6347a62a0a976373e79b1bd586363d.