반응형
MD5란?
MD5 (Message-Digest algorithm 5) : 128비트 암호화 해시 함수
주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 암호화 결함 때문에 MD5알고리즘을 보안 관련 용도로 쓰는 것은 권장하지 않는다.
임의의 길이의 메시지(variable-length message)를 입력받아, 128비트짜리 고정 길이의 출력값을 낸다.
해시 함수(hash function) : 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수.
암호화 해시 함수(cryptographic hash function) : 매핑된 해시 값만을 가지고는 원래 입력값을 알아내기 힘들다는 성질(역상 저항성)에 의해 사용될 수 있다.
참고 : https://ko.wikipedia.org/wiki/MD5
String을 MD5 해시 값으로 변환하는 법
1. 문자열에서 md5 데이터 생성
2. md5 데이터를 16진수 문자열로 변환
import Foundation
import var CommonCrypto.CC_MD5_DIGEST_LENGTH
import func CommonCrypto.CC_MD5
import typealias CommonCrypto.CC_LONG
func MD5(string: String) -> Data {
let length = Int(CC_MD5_DIGEST_LENGTH)
let messageData = string.data(using:.utf8)!
var digestData = Data(count: length)
_ = digestData.withUnsafeMutableBytes { digestBytes -> UInt8 in
messageData.withUnsafeBytes { messageBytes -> UInt8 in
if let messageBytesBaseAddress = messageBytes.baseAddress, let digestBytesBlindMemory = digestBytes.bindMemory(to: UInt8.self).baseAddress {
let messageLength = CC_LONG(messageData.count)
CC_MD5(messageBytesBaseAddress, messageLength, digestBytesBlindMemory)
}
return 0
}
}
return digestData
}
let md5Data = MD5(string:"2021080205")
print(md5Data)
let md5Hex = md5Data.map { String(format: "%02hhx", $0) }.joined()
print("md5Hex: \(md5Hex)")
//let md5Base64 = md5Data.base64EncodedString()
//print("md5Base64: \(md5Base64)")
이런 식으로 구현할 수 있지만, 위와 같이 CommonCrypto를 사용하여 복잡하게 구현하지 않고도
iOS 13 부터는 CryptoKit framework를 사용하여 다음과 같이 더욱 간단하게 사용할 수 있도록 만들어졌다고 한다. 👏🏻👏🏻👏🏻
import Foundation
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()
}
print(MD5(string: "2021080205"))
728x90
반응형
'초보 iOS 개발자의 일상 > 개발 업무' 카테고리의 다른 글
[Swift iOS] INIpayMobile WebView (0) | 2021.08.30 |
---|---|
[iOS] 초간단 ipa 파일로 아이폰에 앱 설치하기 Mac & Window (1) | 2021.08.17 |
FFmpeg-mobile / VLC Player (0) | 2021.07.31 |
[Swift iOS] MTMapView 다음 카카오맵 지도 사용해보기 (0) | 2021.07.30 |
[Swift iOS] 푸시 메시지 클릭시 url로 WebView 이동시키기 (0) | 2021.07.28 |