Digest 모듈
Digest 모듈
이 모듈은 메시지 다이제스트 라이브러리를 위한 프레임워크를 제공해요. 더 많은 알고리즘을 지원하는 OpenSSL::Digest도 함께 살펴보면 좋아요.
암호학적 해시 함수는 데이터를 받아 고정된 비트 문자열, 즉 해시 값(다이제스트라고도 불러요)을 돌려주는 절차예요. 해시 함수는 일방향 함수(one-way function)라고도 불러요. 메시지에서 다이제스트를 계산하는 건 쉬운 반면, 다이제스트에서 메시지를 복원해 내는 건 사실상 불가능하죠.
예시
require 'digest'
# 완전한 다이제스트 계산
Digest::SHA256.digest 'message' #=> "\xABS\n\x13\xE4Y..."
sha256 = Digest::SHA256.new
sha256.digest 'message' #=> "\xABS\n\x13\xE4Y..."
# 다른 인코딩 형식
Digest::SHA256.hexdigest 'message' #=> "ab530a13e459..."
Digest::SHA256.base64digest 'message' #=> "q1MKE+RZFJgr..."
# 청크 단위로 다이제스트 계산
md5 = Digest::MD5.new
md5.update 'message1'
md5 << 'message2' # << is an alias for update
md5.hexdigest #=> "94af09c09bb9..."
# 파일의 다이제스트 계산
sha256 = Digest::SHA256.file 'testfile'
sha256.hexdigest
추가로 다이제스트를 '버블 바블(bubble babble)' 형식으로 인코딩할 수도 있어요. 이것은 자음과 모음의 연속으로 이루어져서, 16진수 다이제스트보다 알아보고 비교하기 쉬워요.
require 'digest/bubblebabble'
Digest::SHA256.bubblebabble 'message' #=> "xopoh-fedac-fenyh-..."
버블 바블의 스펙은 web.mit.edu/kenta/www/one/bubblebabble/spec/jrtrjwzi/draft-huima-01.txt에서 볼 수 있어요.
출처: Ruby 3.3 API
본문
상수
REQUIRE_MUTEX—Digest()를 위한 뮤텍스예요.VERSION
클래스 메서드
bubblebabble(string) → bubblebabble_string— 주어진 문자열의 BubbleBabble 인코딩 버전을 돌려줘요.hexencode(string) → hexencoded_string— 주어진 문자열의 hex 인코딩 버전을 생성해요.
Digest 알고리즘
서로 다른 다이제스트 알고리즘(해시 함수)을 사용할 수 있어요.
MD5— RFC 1321MD5Message-Digest Algorithm 참고.RIPEMD-160—Digest::RMD160로 제공돼요.SHA1— FIPS 180 Secure Hash Standard 참고.SHA2계열 — FIPS 180 Secure Hash Standard가 정의하는 다음 알고리즘들:SHA512,SHA384,SHA256.
더 알아보기
- OpenSSL::Digest — 더 많은 알고리즘을 지원하는 다이제스트 구현