λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
자료ꡬ쑰

[자료ꡬ쑰] ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜

by cheezzz 2021. 12. 30.
λ°˜μ‘ν˜•

- ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜

  • μž„μ˜ 길이의 λ©”μ‹œμ§€λ₯Ό 일정 κ³ μ • 길이의 ν•΄μ‹œ κ°’μœΌλ‘œ λ³€ν™˜μ‹œμΌœμ£ΌλŠ” 단방ν–₯μ„± ν•¨μˆ˜/μ•Œκ³ λ¦¬μ¦˜
  • ν•΄μ‹œ κ°’μœΌλ‘œλŠ” μž…λ ₯ 값을 μ°Ύμ•„λ‚Ό 수 μ—†μŒ(일방ν–₯μ„±)
  • ν•΄μ‹œ 값이 μΌμΉ˜ν•  것 같은 또 λ‹€λ₯Έ μž…λ ₯ 값을 μ°Ύμ•„λ‚Ό 수 μ—†μŒ(역상저항성)
  • ν•΄μ‹œ 값이 같은 μž„μ˜μ˜ 두 μž…λ ₯ 값을 μ°Ύμ•„λ‚Ό 수 μ—†μŒ(ν•΄μ‹œ 좩돌 μ €ν•­μ„±)
  • μΈμ¦μ„œμ˜ 지문 = μΈμ¦μ„œμ˜ μ£Όμš”μ •λ³΄(λ°œκΈ‰λŒ€μƒ, λ°œκΈ‰λŒ€μƒμ˜ κ³΅κ°œν‚€, λ°œκΈ‰μž, λ°œκΈ‰μžμ˜ μ„œλͺ…)λ₯Ό ν•΄μ‹œν•œ κ°’

 

- ν•΄μ‹œ ν…Œμ΄λΈ”

  • key: 맀핑 μ „ μ›λž˜ λ°μ΄ν„°μ˜ κ°’, hash value(인덱슀): 맀핑 ν›„ λ°μ΄ν„°μ˜ κ°’
  • key-value μŒμ—μ„œ key 값을 ν…Œμ΄λΈ”μ— μ €μž₯ μ‹œ, key 값을 ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ 계산 ν›„ 결과값을 λ°°μ—΄μ˜ 인덱슀둜 μ €μž₯ν•˜λŠ” 방식
  • ν•΄μ‹œ ν•¨μˆ˜: key κ°’ kλ₯Ό μž…λ ₯ λ°›μ•„ 0λΆ€ν„° 배열크기-1 μ‚¬μ΄μ˜ 값인 key의 ν•΄μ‹œ κ°’ h(k) 좜λ ₯
  • 좩돌
    key보닀 ν•΄μ‹œ κ°’μ˜ κ°œμˆ˜κ°€ 더 적기 λ•Œλ¬Έμ—, λ‹€λ₯Έ k 값이 λ™μΌν•œ h(k)값을 κ°€μ Έ λ™μΌν•œ slot에 μ €μž₯λ˜λŠ” 경우
    (slot: 데이터가 μ €μž₯λ˜λŠ” κ³³)
  • Chaining 방법 – 좩돌 μ΅œμ†Œν™”
    λ™μΌν•œ ν•΄μ‹œ 값이 좜λ ₯λ˜μ–΄ 좩돌이 λ°œμƒν•˜λ©΄, κ·Έ μœ„μΉ˜μ— 있던 데이터에 key 값을 ν¬μΈν„°λ‘œ 뒀이어 μ—°κ²°(μ—°κ²°λ¦¬μŠ€νŠΈ ν˜•νƒœ)

 

- ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„ 방식

  • λ‚˜λˆ—μ…ˆλ²•: ν‚€ κ°’ kλ₯Ό ν•΄μ‹œ ν…Œμ΄λΈ” μ›μ†Œ 개수 m으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ ν•΄μ‹œ κ°’
    h(k) = k mod m
  • κ³±μ…ˆλ²•
  • μœ λ‹ˆλ²„μ…œ 해싱법
  • MD5, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • SHA
    MD5 μ·¨μ•½μ„± κ°œμ„ /λŒ€μ²΄ν•˜κΈ° μœ„함
    SHA-1: 512λΉ„νŠΈ 블둝 λ‹¨μœ„ 처리, 160 λΉ„νŠΈ(20λ°”μ΄νŠΈ) ν•΄μ‹œ κ°’ 생성, 속도 빠름
    SHA-2: 256은 256λΉ„νŠΈ(32λ°”μ΄νŠΈ), 384λŠ” 384λΉ„νŠΈ, 512λŠ” 512λΉ„νŠΈμ˜ ν•΄μ‹œ κ°’ 생성
λ°˜μ‘ν˜•

λŒ“κΈ€