https://github.com/nikolairuhe/swiftdigest
Simple md5 implementation in pure Swift with no dependencies.
https://github.com/nikolairuhe/swiftdigest
md5 md5hashing swift swift-4
Last synced: about 4 hours ago
JSON representation
Simple md5 implementation in pure Swift with no dependencies.
- Host: GitHub
- URL: https://github.com/nikolairuhe/swiftdigest
- Owner: NikolaiRuhe
- License: mit
- Created: 2017-09-20T15:11:44.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-05-22T03:10:50.000Z (over 5 years ago)
- Last Synced: 2025-04-09T23:43:10.107Z (6 months ago)
- Topics: md5, md5hashing, swift, swift-4
- Language: Swift
- Homepage:
- Size: 25.4 KB
- Stars: 49
- Watchers: 3
- Forks: 18
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SwiftDigest
Copyright (c) 2017 Nikolai Ruhe.
SwiftDigest is released under the MIT License.
## Contents
This is a pure Swift implementation of the MD5 algorithm. I might add more algorithms in the future. Or not.
The main purpose is to provide hashing through a pure Swift framework without dependencies other than
Swift Foundation. Currently no effort has been taken to optimze the performance. When hashing more than a
couple of kilo bytes it might be better to use Apple's CommonCrypto implementation.## Examples
Hash some `Data`:
let data = Data()
let digest = data.md5
print("md5: \(digest)")// prints: "md5: d41d8cd98f00b204e9800998ecf8427e"
Hash `String` contents:
let input = "The quick brown fox jumps over the lazy dog"
let digest = input.utf8.md5
print("md5: \(digest)")// prints: "md5: 9e107d9d372bb6826bd81d3542a419d6"
Hash the main executable:
let appID = try! Data(contentsOf: Bundle.main.executableURL!).md5
// can be used to send a unique id of the app version to a server or so.## Features
The `MD5Digest` type is ...
- `Hashable`, so it can be used as a key in dictionaries
- `RawRepresentable` to convert to and from string representations
- `CustomStringConvertible` to make printing easy
- `Codable` to enable JSON and Plist coding of types containing a digest property## Interface
/// Represents a 16 byte digest value, created from hashing arbitrary data.
public struct MD5Digest : Hashable, RawRepresentable, CustomStringConvertible, Codable {/// Perform hashing of the supplied data.
public init(from input: Data)/// Create a digest from reading a hex representation from the supplied string.
public init?(rawValue: String)/// The 32 digit hex representation.
public var rawValue: String { get }/// The 32 digit hex representation.
public var description: String { get }/// The raw bytes of the digest value, always exactly 16 bytes.
public var data: Data { get }/// The raw bytes of the digest value as a tuple.
public var bytes: (UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8) { get }
}public extension Data {
/// Computes md5 digest value of the contained bytes.
public var md5: MD5Digest { get }
}public extension String.UTF8View {
/// Computes md5 digest value of the string's UTF-8 representation.
public var md5: MD5Digest { get }
}