DES 키 길이
8 / 16 / 24 바이트 단일 DES: 8바이트(유효 56비트). 3DES: 16바이트(2-key) 또는 24바이트(3-key). 공칭 키 소재 112/168비트, NIST 유효 보안 강도 약 80/112비트(SP 800-57). 이 도구는 바이트 수로 자동 판별하며 다른 길이는 예외를 던집니다.
브라우저에서 DES·3DES(2/3키)·ECB/CBC·PKCS#7 암호화·복호화. 키 길이(8/16/24바이트)를 엄격 검증하고 동등한 OpenSSL 명령을 제공합니다. 업로드 없음.
ECB는 같은 블록을 같은 암호문으로 암호화해 패턴이 새어 나갑니다 — ECB가 필요한 시스템과 통신할 때만 사용하세요.
—
명령에 입력한 키가 포함됩니다.
| 키 (단일 DES) | 0123456789abcdef |
|---|---|
| 평문 | 4e6f772069732074 |
| 암호문 (ECB, 패딩 없음) | 3fa40e8a984d4815 |
이 암호화 도구를 만드는 개발자들이 직접 집필하고 검수합니다. 이 페이지의 모든 암호문과 바이트 수는 도구 엔진이 계산하고 테스트가 단언합니다.
8 / 16 / 24 바이트 단일 DES: 8바이트(유효 56비트). 3DES: 16바이트(2-key) 또는 24바이트(3-key). 공칭 키 소재 112/168비트, NIST 유효 보안 강도 약 80/112비트(SP 800-57). 이 도구는 바이트 수로 자동 판별하며 다른 길이는 예외를 던집니다.
3fa40e8a984d4815 키 0123456789abcdef, 평문 "Now is t" (hex 4e6f772069732074): 패딩 없는 단일 DES ECB가 3fa40e8a984d4815를 출력합니다.
8바이트 8바이트(16자리 hex), CBC 전용 — ECB는 사용하지 않습니다. AES의 16바이트 IV와 다릅니다.
= PKCS#7 DES에서는 PKCS#7입니다 — 역사적 이름 아래 같은 패딩 알고리즘입니다(PKCS#5는 8바이트 블록만 정의했고 하필 DES의 블록입니다).
레거시 상호운용 전용 아니요. 단일 DES는 2005년 철회; 3DES는 SP 800-131A Rev.2(2023)에서 폐기 예정. 레거시 상호운용 전용 — 새로운 것에는 AES-256을 사용하세요.
DES(Data Encryption Standard)는 미국 표준 기관이 1977년 채택한 대칭 블록 암호입니다. IBM의 Lucifer 설계를 기반으로 합니다. 공칭 64비트 키(유효 56비트) 아래에서 64비트(8바이트) 블록을 페이스텔 구조의 16라운드로 처리합니다.
3DES(TDEA, Triple DES)는 짧은 키를 보강하기 위해 DES를 세 번 연결합니다: C = E_K3(D_K2(E_K1(P))). 가운데 단계가 복호화이므로 K1=K2=K3이면 체인이 단일 DES로 붕괴합니다 — 의도된 호환성 선택입니다. 2-key 형태(K3=K1)는 유효 약 112비트로 레거시 은행 시스템에서 가장 흔한 형태입니다.
NIST는 2005년에 단일 DES를 철회했고(FIPS 46-3 통지), SP 800-131A Rev.2(2023)에서 3DES를 폐기 예정으로 분류했습니다. 이들이 아직 존재하는 유일한 이유는 레거시 상호운용입니다: 은행 결제망, 게이트웨이, 90년대/2000년대 Java/.NET/PHP 시스템은 아직도 DES 시대의 암호를 돌립니다. 새로운 설계에는 AES-256을 사용해야 합니다.
# OpenSSL single DES (legacy provider) openssl enc -des-ecb -provider legacy -provider default -K 0123456789abcdef -nopad # 3-key 3DES CBC + PKCS#7 (default provider) openssl enc -des-ede3-cbc -K <48 hex digits> -iv <16 hex digits> -base64 -A
8/16/24바이트는 단일 DES / 2-key / 3-key 3DES로 자동 판별되며, 그 외는 예외를 던집니다. CryptoJS의 조용한 잘라내기나 openssl enc -K의 잘라내고 경고하기와 달리, 잘못된 키는 크게 실패합니다 — 상호운용 불일치의 최상위 원인입니다.
하단의 테스트 벡터 표는 빌드 시점에 동일한 엔진이 도출한 것이므로, 크롤러는 JS를 실행하지 않고도 기준값을 읽을 수 있고 인쇄된 값이 대화형 값과 어긋날 수 없습니다.
모든 파라미터 조합은 OpenSSL 3에서 결과를 재현하는 openssl enc 명령에 대응됩니다(단일 DES용 레거시 프로바이더 플래그 포함). 상대 측에 보내 파라미터 차이를 확정하세요.
중국어 Windows JDK의 DES 시대 Java getBytes()는 GBK를 내놓습니다. 이 도구는 양방향 모두 GBK를 받으므로 구형 시스템의 중국어 평문에 사전 변환이 필요 없습니다.
순수 TypeScript, 의존성 0, 네트워크 요청 0. 키와 평문은 장치를 떠나지 않으며, 로드 후에는 오프라인으로도 동작합니다. 키를 다루는 도구로서 유일하게 수용 가능한 형태입니다.
"DES"의 기본값은 ECB + PKCS5Padding Cipher.getInstance("DES")는 DES/ECB/PKCS5Padding과 동일; "DESede"는 3DES지만 24바이트 키만 허용 — 2-key는 K1‖K2를 K1‖K2‖K1으로 확장하세요. PKCS5Padding은 DES에서 PKCS#7입니다. IV를 생략하면: 암호화는 무작위 IV를 고르고(getIV()로 꺼냄), 복호화는 "Parameters missing"을 던집니다.
des-ede3-cbc / des-ede-cbc 알고리즘 이름은 OpenSSL을 따릅니다: des-ede3는 트리플 ECB, des-ede3-cbc는 CBC. $options=0(기본값)은 Base64 텍스트를 출력; 원시 바이트는 OPENSSL_RAW_DATA. 짧은 키는 조용히 0으로 채워지고; 빈 IV는 경고한 뒤 영 IV로 암호화합니다.
-des-ede3-cbc는 기본으로 동작 단일 DES에는 -provider legacy -provider default가 필요합니다(일부 빌드는 legacy가 아예 없음). -K/-iv는 hex를 받고, 기본은 PKCS#7, 끄려면 -nopad. -K는 지나치게 긴 키를 경고와 함께 잘라냅니다.
8바이트 원시 키(WordArray)는 동작; 잘못된 길이는 조용히 0으로 채워지거나 잘립니다 (4바이트는 채움, 10바이트는 잘림 — 오류 없음). 문자열 "키"는 키 유도를 실행합니다(MD5 + 무작위 솔트, Salted__ 접두어 출력, 매번 다름). IV 없는 CBC는 영 IV가 아니라 TypeError 충돌입니다. 8바이트 키의 TripleDES는 조용히 단일 DES가 됩니다.
TripleDES의 기본값은 CBC + PKCS7 TripleDESCryptoServiceProvider: Mode=CBC, Padding=PKCS7, Key는 16 또는 24바이트(DES는 8). .NET은 약한 키를 거부합니다(패리티를 먼저 정규화한 뒤 약한 키 표를 검사 — 영 키는 예외를 던짐) 반면 다른 모든 라이브러리는 받아들입니다. 마이그레이션할 때 주의하세요.
des.NewCipher는 8바이트 키의 원시 블록 인터페이스를 줍니다; cipher.NewCBCEncrypter 등은 직접 감싸야 합니다. 3DES는 des.NewTripleDESCipher(24바이트). IV 길이는 대부분의 언어보다 엄격하게 검사됩니다.
키 0123456789abcdef, 평문 (hex) 4e6f772069732074
3fa40e8a984d4815
평문은 ASCII 문자열 "Now is t"입니다. 이것은 교과서적인 FIPS 81 벡터이며, 페이지 하단의 표는 빌드 시점에 동일한 엔진으로 계산됩니다 — DES 구현이 이 입력으로 이 값을 내지 않는다면 버그가 있는 것입니다.
키 0123456789abcdeffedcba9876543210 (16바이트), IV fedcba9876543210, 평문: DES interop test: order 20260927-0042
QmnMoewSecp7Z7cr/w3/4AjM9lpFo1swc4dfLNH5UkgCwU5n7WIdKA==
16바이트 키는 2-key 3DES로 처리됩니다(K1 = 앞 8바이트, K2 = 뒤 8바이트, K3 = K1 — EDE2 조합). 8바이트 블록 위의 PKCS#7은 Java가 DES에 대해 "PKCS5Padding"이라 부르는 것과 정확히 같습니다: 같은 스킴이고 블록 크기만 다릅니다.
키 0123456789abcdef23456789abcdef010456789abcdef012 (24바이트), IV fedcba9876543210, 평문: hello des
DhDQX9sfxKOirZ8eyqT7Jg==
24바이트 키는 완전한 3-key EDE3입니다: C = E_K3(D_K2(E_K1(P))). 세 가지 키 길이 가운데 퇴화 등가가 없는 유일한 형태입니다 — 2-key와 K1=K2=K3는 모두 더 약한 암호로 붕괴됩니다.
Java DES/ECB/PKCS5Padding은 ECB + PKCS#7, openssl enc -des-ede3-cbc는 CBC + PKCS#7을 고르세요. 구형 PHP mcrypt 코드는 대개 Zero 패딩을 씁니다.
바이트 수가 암호를 선택합니다: 8 = 단일 DES, 16 = 2-key 3DES, 24 = 3-key 3DES. Hex, Text 또는 Base64를 고르세요; 배지가 실제 바이트 수와 감지된 형태를 보여줍니다. 잘못된 길이는 예외를 던집니다 — 아무것도 잘려나가지 않습니다.
ECB는 IV가 필요 없습니다. IV는 정확히 8바이트 — 16자리 hex로, AES의 32자리가 아닙니다. Random 버튼이 새 값을 만들어 줍니다.
암호화: 텍스트(UTF-8/GBK) 또는 hex 입력. 복호화: Base64 또는 hex 암호문을 붙여넣기. 타이핑하는 대로 결과가 갱신되며, 한 번의 클릭으로 복사하고 Decrypt-this 버튼으로 왕복 검증을 할 수 있습니다.
접을 수 있는 패널이 현재 결과를 재현하는 openssl enc 명령을 제공합니다(키 포함; 단일 DES 명령에는 -provider legacy -provider default가 붙습니다). 상호운용하는 상대에게 보내세요 — 어느 쪽 파라미터가 틀렸는지 가장 빨리 정리되는 방법입니다.
"32자리 hex DES 키"는 16바이트 — 단일 DES가 아니라 2-key 3DES입니다. 반대로 24바이트 키를 2-key만 지원하는 시스템에 넣어도 실패합니다.
키 0123456789abcdeffedcba9876543210 (16바이트)를 단일 DES로 선택 → 오류 "키는 정확히 8바이트여야 합니다"
같은 키를 16바이트(2-key 3DES)로 → 정상 복호화
Java는 DES에 "PKCS5Padding"이라 쓰지만 PKCS#7 알고리즘을 실행합니다(PKCS#5는 8바이트 블록 패딩만 정의했고 그 8바이트가 DES의 블록이라 이름이 남았습니다). JCE 암호문에 None이나 Zero를 고르면 항상 실패합니다.
JCE `DES/ECB/PKCS5Padding` 암호문을 "패딩 없음"으로 복호화 → 끝에 쓰레기 데이터 또는 bad-padding 오류
PKCS#7 (Java PKCS5Padding) 선택 → 깨끗한 출력
DES의 블록은 8바이트라 IV도 8바이트입니다. AES 코드에서 온 32자리 hex IV는 길이 검사를 실패하고, 8자리 IV는 0으로 채워져 잘못 읽힙니다.
IV 00000000000000000000000000000000 (32자리 hex) → 오류 "IV는 8바이트여야 합니다"
IV 0000000000000000 (16자리 hex) → 수용됨
다중 블록 암호문을 잘못된 IV로 복호화해도 오류가 나지 않습니다 — 첫 8바이트 블록만 쓰레기이고 나머지는 정상 복호화됩니다(IV는 첫 블록에만 닿고, 패딩 검사는 마지막 블록에 있습니다). "앞 몇 글자만 깨지고 나머지는 정상"이면 키보다 IV를 먼저 확인하세요; 단일 블록 암호문은 대신 패딩이 깨져 bad decrypt를 던집니다.
다중 블록 암호문 + 잘못된 IV → 처음 8바이트만 깨지고 나머지 정상 — "키가 틀렸다"고 오해
IV만 바꾸기(키 그대로) → 첫 블록 복원, IV가 원인임을 확인
-K는 필요한 바이트만 남기고 스크립트가 삼켜 버리는 한 줄 경고를 출력합니다. 상대가 "키는 이 48자리 hex다"라고 말하지만 실제로는 처음 16바이트로 암호화했다면, 전체 키로 복호화하는 것은 실패합니다.
셸: `-K <49자리 hex>` → "hex string is too long, ignoring excess" 경고가 파이프라인에 묻힘
이 도구의 동등 명령으로 올바른 길이의 `-K`를 생성한 뒤 상대와 키 바이트 비교
OpenSSL 3의 기본 프로바이더에는 des-ecb/des-cbc가 없습니다; 옵션 없이 실행하면 digital envelope routines::unsupported를 던집니다. -provider legacy -provider default를 붙이거나, K‖K‖K(대수적으로 단일 DES)로 des-ede3를 쓰세요.
openssl enc -des-ecb -K … → Error: unsupported
openssl enc -des-ecb -provider legacy -provider default -K … (또는 des-ede3-ecb -K <K‖K‖K>)
Cipher.getInstance("DES/ECB/PKCS5Padding") 출력이나 openssl_encrypt(..., 'des-ede3-cbc', ...) 출력을 바꿔 끼우기 전에 이 도구와 바이트 단위로 비교하세요. 2-key/3-key 형태는 키 길이에서 감지되므로 맞힐 것이 없습니다.03 03 03) 블록이 가득 차면 블록 하나를 통째로 추가합니다 — 이것이 Java가 DES에 대해 "PKCS5Padding"이라 부르는 것입니다. Zero 패딩은 0x00으로 채우며 평문이 실제로 0x00으로 끝나면 손실이 있습니다. None은 정확히 8의 배수를 요구합니다.-provider legacy -provider default가 필요하고, 일부 빌드(Node에 번들된 OpenSSL 포함)는 아예 빠져 있습니다. 3DES(des-ede/des-ede3)는 기본 프로바이더에 남아 있습니다. 이 도구의 순수 TS 엔진은 영향받지 않습니다.PKCS5Padding은 DES에서 PKCS#7과 동일합니다 — None을 고르지 마세요)입니다. 오른쪽의 접을 수 있는 패널이 현재 설정에 대한 동등한 OpenSSL 명령을 보여줍니다; 이 명령을 상대 측에 보내는 것이 불일치 지점을 찾는 가장 빠른 방법입니다. openssl enc -K는 대신 조용히 잘라내거나 0으로 채우는데, 이것이 상호운용 실패의 1위 원인입니다. DES/ECB/PKCS5Padding은 이 도구에서 무엇에 해당하나요?Cipher.getInstance("DES/ECB/PKCS5Padding")의 출력은 여기서 ECB + PKCS#7과 8바이트 단일 DES 키로 복호화됩니다. ⚠️ Java의 3DES(DESede)는 24바이트 키만 허용합니다 — 2-key 형태는 K1‖K2를 K1‖K2‖K1으로 직접 확장해야 합니다. des-ede3-cbc는 3-key 3DES + CBC, des-ede3-ecb는 3-key + ECB, des-ede-cbc는 2-key 형태입니다. 24바이트 키는 3-key를, 16바이트는 2-key를 선택합니다. "DES"는 기본 ECB, OpenSSL의 모드 접미사 없는 이름 des-ede3/des-ede는 ECB(CBC의 별칭은 -des3); PHP의 openssl_encrypt는 알고리즘 이름을 명시해야 하며, 헷갈리는 지점은 기본 출력이 원시 바이트가 아니라 Base64 텍스트라는 것; ③ 패딩 — 구형 PHP mcrypt는 Zero 패딩을 자주 썼고 JCE는 PKCS#5/#7; ④ 인코딩 — hex vs Base64, 그리고 대소문자; ⑤ CryptoJS 비밀번호 함정 — "키"로 문자열을 넘기면 키 유도(MD5 + 무작위 솔트, 출력 앞에 Salted__, 매번 다름)가 돌아가는데 이것은 원시 키가 아니다 — "같은 코드인데 매번 결과가 다르다"의 최상위 원인. 이 도구에서는 각 요소를 바꿔가며 확인할 수 있고, 오른쪽의 동등 OpenSSL 명령을 상대 측에 보내 재현할 수 있습니다. 보안 도구
온라인 AES 복호화 — GCM/CBC/CTR, 암호 문구 또는 원시 키, OpenSSL·CryptoJS "U2FsdGVkX1" 형식 자동 인식. 브라우저에서만 실행되며 키는 유출되지 않습니다.
보안 도구
무료 온라인 AES 암호화 도구 — AES-128/192/256, GCM/CBC/CTR, 암호 문구(PBKDF2) 또는 원시 키. 브라우저에서만 실행되고 서버 업로드는 없습니다.
보안 도구
온라인으로 bcrypt 비밀번호 해시를 생성·검증하세요 — 조절 가능한 비용 인자, $2b$/$2a$/$2y$ 접두사 지원. 100% 브라우저에서 실행, 비밀번호는 업로드되지 않습니다.
보안 도구
16진수나 텍스트에서 CRC-8·CRC-16·CRC-32 변형 63개를 계산하는 온라인 도구. 맞지 않는 체크섬을 역조회 칸에 넣으면 MODBUS 등 어느 변형인지 알려 줍니다.
보안 도구
무료 온라인 HMAC 생성·검증 도구. Text/Hex/Base64 키로 HMAC-SHA256/SHA1/SHA384/SHA512를 Hex/Base64/Base64URL로 출력. 100% 브라우저 실행, 키 유출 없음.
보안 도구
무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입·추적 없음.