AES 암호화

AES로 암호화하거나 복호화합니다. 한 방향 다이제스트는 해시 생성

이 페이지가 암호화하는 것

AES는 블록 암호입니다. 이 페이지는 브라우저에서 ECB, CBC, CTR, OFB, CFB, GCM으로 계산합니다. 키는 16, 24 또는 32바이트입니다. 비밀번호의 한 방향 지문은 해시 생성에 있습니다.

사용법

  1. 입력을 붙여 넣습니다. 모드는 CBC, 패딩은 pkcs7padding, 문자셋은 UTF-8에서 시작합니다.
  2. 키와 IV 형식은 텍스트에서 시작합니다. 입력은 텍스트, 출력은 hex입니다. ECB는 IV를 숨기고, GCM은 태그 길이와 AAD를 보여 주며 nopadding으로 고정합니다.
  3. 암호화는 암호화합니다. 복호화는 복호화합니다. 예제 보기는 hello, CBC, pkcs7padding, UTF-8, 키 1234567890abcdef, IV 1234567890abcdef, hex 7e6347a62a0a976373e79b1bd586363d를 채웁니다.
  4. 맞바꾸기는 결과를 입력으로 넣고 입력 형식을 방금 나온 형식으로 바꿉니다. 출력 형식을 텍스트로 바꾼 뒤 복호화하면, 같은 키와 IV로 다시 hello입니다.
  5. 모두 지우기는 칸을 비우고 CBC, pkcs7padding, UTF-8, 텍스트 형식, hex 출력으로 되돌립니다. 결과 복사는 출력을 복사합니다.

키, IV, 패딩, 태그

텍스트는 문자셋으로 바이트가 됩니다. hex와 Base64는 이미 바이트라 문자셋을 적용하지 않습니다. 키는 그다음 16, 24 또는 32바이트, 곧 AES-128, AES-192, AES-256이어야 합니다. UTF-8의 1234567890abcdef는 16바이트입니다.

CBC, CFB, OFB, CTR의 IV는 16바이트입니다. ECB에는 IV가 없습니다. GCM은 비어 있지 않은 IV를 받고, 흔히 12바이트입니다. pkcs5padding과 pkcs7padding은 여기서 같습니다. 1에서 16바이트를 더해 16의 배수로 만듭니다. nopadding은 바이트를 그대로 두므로 ECB와 CBC는 이미 그 배수여야 합니다. GCM은 nopadding만 됩니다.

GCM 태그는 암호문 끝에 붙습니다. 태그 길이는 처음에 128비트입니다. AAD는 검증되고 암호화되지 않습니다. 복호화는 텍스트 입력을 거부하고, 암호화는 텍스트 출력을 거부합니다. 키, IV, 태그, 패딩이 다르면 실패합니다.

어디에 쓰나

  • CBC 암호문을 다른 AES 도구와 맞춥니다.
  • hex 끝에 태그가 있는 GCM을 읽습니다.
  • 키를 텍스트, hex, Base64 사이에서 바꿉니다.

질문

여기서 pkcs5와 pkcs7이 같은 이유?

AES 블록은 16바이트입니다. 두 패딩 모두 같은 개수 바이트로 마지막 블록을 채웁니다.

같은 글의 hex는 항상 같나요?

모드, 패딩, 키, IV가 같으면 같습니다. 예제 보기의 결과는 7e6347a62a0a976373e79b1bd586363d입니다.