SHA-384 해시 생성기

임의의 텍스트에서 SHA-384 해시 생성

입력 텍스트

로컬에서 실행 · 시크릿 붙여넣기 안전

SHA-384 해시

SHA-384 해시가 여기에 표시됩니다…

SHA-384 해싱이란?

SHA-384는 NIST FIPS 180-4에 SHA-2 계열의 일부로 정의된 암호화 해시 함수입니다. 임의 길이의 입력을 받아 고정된 384비트(48바이트) 메시지 다이제스트를 생성하며, 일반적으로 96자리 16진수 문자열로 표시됩니다. SHA-384는 TLS 암호화 스위트, 디지털 인증서 서명, 그리고 SHA-256보다 높은 충돌 저항성 마진을 요구하는 정부 시스템에서 널리 사용됩니다.

내부적으로 SHA-384는 SHA-512의 잘린(truncated) 변형입니다. SHA-512와 동일한 1024비트 블록 크기, 80회 압축 라운드, 64비트 워드 연산을 사용하지만, 다른 초기 해시값 집합(9번째부터 16번째 소수에서 파생)으로 시작하고 최종 상태의 처음 384비트만 출력합니다. 이 잘림(truncation)으로 인해 동일한 입력이라도 SHA-384는 SHA-512와 다른 다이제스트를 생성합니다.

SHA-384는 64비트 워드로 동작하기 때문에 현대 64비트 프로세서에서 SHA-256보다 빠르게 실행되면서도 더 큰 다이제스트를 제공합니다. 이는 실용적인 중간 지점을 형성합니다. SHA-512의 128자리 16진수 출력에 따른 저장 부담 없이 SHA-256보다 강력한(192비트 충돌 저항성 대 128비트) 보안을 제공합니다. SHA-384는 TLS 1.3 인증서 검증 서명의 기본 해시이며, NSA Suite B(현재 CNSA)에서 최고 기밀 데이터에 요구됩니다.

온라인 SHA-384 생성기를 사용하는 이유

SHA-384 해시를 생성하려면 보통 터미널 명령어를 실행하거나 코드를 작성해야 합니다. 이 브라우저 기반 도구를 사용하면 아무것도 설치하거나 서버로 데이터를 전송하지 않고도 SHA-384 다이제스트를 즉시 계산할 수 있습니다. CDN 자산의 SRI 해시 생성, 파일 체크섬 검증, 동일 입력에 대한 SHA-384와 SHA-256 출력 비교 등 어떤 용도든, 이 도구는 모든 최신 브라우저에서 의존성 없이 SHA-384 다이제스트를 다룰 수 있는 즉각적인 방법을 제공합니다.

브라우저에서 즉시 연산
텍스트를 붙여넣으면 96자리 SHA-384 해시가 즉시 표시됩니다. Web Crypto API가 외부 의존성 없이 브라우저에서 네이티브로 연산을 처리합니다.
🔒
개인정보 우선 해싱
입력 데이터는 기기를 벗어나지 않습니다. 모든 해싱은 Web Crypto API를 통해 로컬에서 실행됩니다 — 서버 요청 없음, 로깅 없음, 데이터 보관 없음.
📋
복사 바로 가능한 출력 형식
클릭 한 번으로 소문자와 대문자 16진수 출력 간에 전환하세요. 체크섬 파일, 설정, 또는 문서에 사용할 수 있도록 해시를 클립보드에 복사하세요.
🔍
계정 또는 설치 불필요
Chrome, Firefox, Safari, Edge 등 모든 최신 브라우저에서 동작합니다. 회원가입, 확장 프로그램, CLI 설정이 필요 없습니다.

SHA-384 해시 생성기 활용 사례

TLS 인증서 검증
TLS 1.2와 1.3은 인증서 서명 검증과 PRF(의사 난수 함수)에 SHA-384를 사용합니다. 보안 감사 중 인증서 지문을 예상값과 대조하여 검증하기 위해 SHA-384 다이제스트를 계산하세요.
Subresource Integrity (SRI)
CDN에서 로드되는 JavaScript 및 CSS 파일의 SHA-384 해시를 생성하세요. script 및 link 태그의 integrity 속성은 대부분의 SRI 생성기에서 기본적으로 Base64 인코딩된 SHA-384를 사용합니다.
정부 및 컴플라이언스 시스템
CNSA(이전 NSA Suite B)는 기밀 정보 보호에 SHA-384를 의무화합니다. FIPS 180-4 알고리즘을 요구하는 컴플라이언스 워크플로우에서 문서 무결성 검증을 위해 해시를 생성하세요.
파일 무결성 검사
펌웨어 이미지, 소프트웨어 릴리스, 또는 설정 파일의 SHA-384 체크섬을 계산하세요. 전송 전후의 해시를 비교하여 손상이나 변조를 감지하세요.
HMAC-SHA384 키 파생
SHA-384는 IPsec 및 TLS와 같은 프로토콜에서 메시지 인증을 위해 HMAC과 함께 사용됩니다. HMAC-SHA384 구현을 디버깅할 때 예상 해시 출력을 검증하는 데 이 도구를 활용하세요.
암호화 학습 실습
SHA-2 계열을 학습하는 학생들은 동일한 입력에 대해 SHA-384, SHA-256, SHA-512 출력을 비교하여 서로 다른 초기값과 잘림(truncation)이 어떻게 구별되는 다이제스트를 생성하는지 관찰할 수 있습니다.

SHA-2 계열 변형 비교

SHA-384는 여러 다른 변형과 함께 SHA-2 계열에 속합니다. 아래 표는 다이제스트 크기, 출력 길이, 일반적인 용도에서 어떻게 다른지 보여줍니다.

변형다이제스트16진수 길이바이트적합한 용도
SHA-384384 bits96 hex chars48 bytesTLS 1.2/1.3, government/CNSA, certificate signatures
SHA-256256 bits64 hex chars32 bytesTLS, blockchain, code signing, JWTs, SRI
SHA-512512 bits128 hex chars64 bytesDigital signatures, HMAC with large keys
SHA-224224 bits56 hex chars28 bytesTruncated SHA-256 — rare, specific compliance
SHA-512/256256 bits64 hex chars32 bytesSHA-512 speed on 64-bit CPUs, 256-bit output

SHA-384 대 SHA-256 대 SHA-512 대 SHA-3-384

SHA-384와 다른 해시 알고리즘 중 선택은 보안 요구사항, 플랫폼 제약, 성능 요구에 달려 있습니다. 이 비교는 가장 관련성 높은 속성들을 다룹니다.

속성SHA-384SHA-256SHA-512SHA-3-384
Digest size384 bits (96 hex)256 bits (64 hex)512 bits (128 hex)384 bits (96 hex)
Internal state512 bits (8x64-bit)256 bits (8x32-bit)512 bits (8x64-bit)1600 bits (sponge)
Block size1024 bits512 bits1024 bits832 bits
Rounds80648024
Word size64 bits32 bits64 bitsN/A (sponge)
Length extensionResistantVulnerableVulnerableResistant
64-bit performanceFast (native ops)Slower (32-bit ops)Fast (native ops)Moderate
StandardFIPS 180-4FIPS 180-4FIPS 180-4FIPS 202
Web Crypto APIYesYesYesNo

SHA-384 내부 동작 원리

SHA-384는 SHA-512와 동일한 Merkle–Damgård 구조를 통해 입력을 처리합니다. 입력은 1024비트의 배수로 패딩되고 블록으로 분할되며, 각 블록은 64비트 워드 연산으로 Ch, Maj, 두 개의 Sigma 함수를 사용하는 80라운드의 혼합 과정을 거칩니다. SHA-512와의 핵심 차이는 초기 해시값입니다. SHA-384는 9번째부터 16번째 소수의 제곱근 소수 부분에서 파생된 값을 사용하는 반면, SHA-512는 처음 8개 소수를 사용합니다. 모든 블록이 처리된 후, SHA-384는 512비트 내부 상태를 처음 384비트로 잘라냅니다.

Input: "hello world"
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)

잘림(truncation)과 다른 초기화 방식으로 인해 SHA-384와 SHA-512는 동일한 입력에 대해 항상 다른 다이제스트를 생성합니다. 또한 이로 인해 SHA-384는 길이 확장 공격에 본질적으로 저항성을 가집니다. 반면 SHA-256과 SHA-512에서는 공격자가 원래 메시지를 알지 못해도 데이터를 추가하고 유효한 해시를 계산할 수 있습니다.

SHA-384 코드 예제

SHA-384는 모든 주요 언어와 런타임에서 네이티브로 지원됩니다. 아래는 프로젝트에 바로 복사하여 사용할 수 있는 예제입니다.

JavaScript (Web Crypto API)
// Works in all modern browsers and Node.js 18+
async function sha384(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-384', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha384('hello world')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha384').update('hello world').digest('hex')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"
Python
import hashlib

# Basic SHA-384 hash
result = hashlib.sha384(b'hello world').hexdigest()
print(result)
# → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"

# Hash a string with Unicode characters
text = 'café ☕'
hashlib.sha384(text.encode('utf-8')).hexdigest()
# → 96-character hex string

# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
    sha = hashlib.sha384()
    for chunk in iter(lambda: f.read(8192), b''):
        sha.update(chunk)
    print(sha.hexdigest())
Go
package main

import (
    "crypto/sha512"
    "fmt"
)

func main() {
    data := []byte("hello world")
    // SHA-384 lives in the crypto/sha512 package
    hash := sha512.Sum384(data)
    fmt.Printf("%x\n", hash)
    // → fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
}
CLI (Linux / macOS)
# Using sha384sum (Linux)
echo -n "hello world" | sha384sum
# → fdbd8e75a67f29f701a4e040385e2e23...  -

# macOS
echo -n "hello world" | shasum -a 384
# → fdbd8e75a67f29f701a4e040385e2e23...  -

# Using openssl (cross-platform)
echo -n "hello world" | openssl dgst -sha384
# → SHA2-384(stdin)= fdbd8e75a67f29f701a4e040385e2e23986303ea...

# Verify a file checksum
sha384sum myfile.bin > checksum.txt
sha384sum -c checksum.txt
# → myfile.bin: OK

자주 묻는 질문

SHA-384와 SHA-512의 차이점은 무엇인가요?
SHA-384와 SHA-512는 동일한 압축 함수, 블록 크기(1024비트), 라운드 수(80회)를 사용합니다. 두 가지 차이점이 있습니다. SHA-384는 다른 초기 해시값(1–8번 소수 대신 9–16번 소수에서 파생)으로 시작하며, 512비트 내부 상태의 처음 384비트만 출력합니다. 따라서 동일한 입력에 대해 항상 다른 다이제스트를 생성합니다.
SHA-384가 SHA-256보다 더 안전한가요?
SHA-384는 다이제스트 길이의 절반이라는 생일 공격 경계에 기반하여 SHA-256의 128비트 대비 192비트의 충돌 저항성을 제공합니다. 사전 이미지 저항성의 경우 SHA-384는 384비트 대 256비트를 제공합니다. 실제로 두 알고리즘 모두 현재 위협 모델에서 안전하다고 여겨지지만, SHA-384는 장기 데이터 보호를 위한 더 큰 안전 마진을 제공하며 일부 정부 표준에서 요구됩니다.
TLS는 SHA-512 대신 왜 SHA-384를 사용하나요?
TLS_AES_256_GCM_SHA384와 같은 TLS 암호화 스위트는 충분한 충돌 저항성(192비트)을 제공하면서 다이제스트 크기를 관리하기 쉽게 유지하기 때문에 SHA-384를 사용합니다. SHA-512의 128자리 16진수 출력은 TLS 사용 사례에 비례하는 보안 이점 없이 핸드셰이크 메시지와 인증서 체인에 부담을 줍니다. SHA-384는 또한 AES-256이 목표로 하는 192비트 보안 수준과 일치합니다.
SHA-384는 Subresource Integrity(SRI)에서 어떻게 사용되나요?
HTML의 SRI 태그는 integrity="sha384-{base64hash}" 형식을 사용하여 CDN에서 가져온 스크립트와 스타일시트가 수정되지 않았음을 검증합니다. 브라우저는 다운로드한 파일의 SHA-384 해시를 계산하고 예상값과 비교합니다. 일치하지 않으면 리소스가 차단됩니다. SHA-384는 보안과 다이제스트 크기 간의 균형을 맞추기 때문에 SRI에서 가장 널리 사용되는 알고리즘입니다.
SHA-384 해시를 역산하여 원래 입력을 복원할 수 있나요?
아니요. SHA-384는 설계상 단방향 함수입니다. 384비트의 사전 이미지 저항성을 가지며, 2^384가지 가능성에 대한 무차별 대입 탐색보다 빠르게 SHA-384 다이제스트에서 입력을 복원하는 알려진 방법이 없습니다. 그러나 짧거나 예측 가능한 입력(일반 비밀번호 등)은 사전 계산된 레인보우 테이블이나 사전 공격으로 찾을 수 있으므로, 비밀번호는 bcrypt나 Argon2 같은 전용 알고리즘으로 해싱해야 합니다.
SHA-384는 Web Crypto API에서 지원되나요?
네. 모든 최신 브라우저는 crypto.subtle.digest('SHA-384', data)를 통해 SHA-384를 구현합니다. 이것이 이 도구에서 사용하는 API와 동일합니다. Node.js 18+와 Deno에서도 사용할 수 있습니다. Web Crypto API는 ArrayBuffer를 반환하며, 각 바이트를 두 자리 16진수 표현으로 매핑하여 16진수 문자열로 변환합니다.
SHA-256 대신 SHA-384를 언제 사용해야 하나요?
보안 정책에서 128비트 이상의 충돌 저항성이 요구될 때, 기밀 데이터에 대한 CNSA/Suite B 컴플라이언스가 필요할 때, 또는 AES-256을 이미 사용 중이고 이와 일치하는 192비트 보안 수준을 원할 때 SHA-384를 사용하세요. SHA-384는 64비트 워드 연산을 사용하기 때문에 64비트 프로세서에서 SHA-256보다 빠르게 실행됩니다. 대부분의 웹 애플리케이션과 범용 해싱에서는 SHA-256이 여전히 표준 선택으로 남아 있습니다.