본문 바로가기
알고리즘

MD5

by 패쓰킴 2023. 9. 14.
728x90

MD5란?

Message-Digest algorithm 5의 약자로 암호화 해시 알고리즘 중 하나로 임의의 길이의 문자 값을 받아서 해시값을 출력해준다.

단방향 암호화이기 때문에 출력값에서 입력값으로 복원하기는 일반적으로 불가능하다.

복잡한 수학적 해시 알고리즘을 통해 32자의 문자열로 반환되며 같은 값은 항상 같은 출력값이 나온다. 또한 고속 연산이 가능하고 읨의로 변경된 패턴에 대해 충돌 가능성이 낮기 때문에 주로 파일의 무결성을 확인하는데 주로 사용된다.

권장되지는 않지만 MD5를 이용해 보안용도로 사용할 때에는 반드시 salt를 붙여서 사용해야한다.

*salt: 입력된 값에 임의의 값을 붙인다든지, 암호화 한 값에 또다른 값을 붙여서 암호화 한다든지... 이름이 왜 Salt냐면 음식에 소금을 뿌리듯 입력된 값에 무작위로 소금을 뿌리듯 임의의 값을 뿌리기 때문이다.

 

이러한 복잡한 알고리즘을 직접 만들어 사용하지 않아도 애플에서 지원되는 프레임워크를 통해 간단하게 구현할 수 있다.

import CryptoKit

func MD5(string: String) -> String {
  let digest = Insecure.MD5.hash(data: string.data(using: .utf8) ?? Data())

  return digest.map { String(format: "%02hhx", $0) }.joined()
}

 

참고:

https://hongssup.tistory.com/177

https://ko.wikipedia.org/wiki/MD5

https://sisiblog.tistory.com/312

https://namu.wiki/w/MD5

728x90

'알고리즘' 카테고리의 다른 글

빅 오  (1) 2023.10.19

댓글