Tag Archives: CryptoSwift

CryptoSwift: Crypto related functions and helpers for Swift implemented in Swift programming language


via krzyzanowskim/CryptoSwift · GitHub.

For Swift 1.2 check swift12 branch.

To install CryptoSwift, add it as a submodule to your project (on the top level project directory):

git submodule add https://github.com/krzyzanowskim/CryptoSwift.git

Then, drag the CryptoSwift.xcodeproj file into your Xcode project, and add CryptoSwift.framework as a dependency for your target.

iOS and OS X

By default project is setup for iOS. You need to switch to OS X SDK manually see #8

Crypto related functions and helpers for Swift implemented in Swift programming language


CryptoSwift

Crypto related functions and helpers for Swift implemented in Swift. (#PureSwift)

Requirements

Good mood

Features

  • Easy to use
  • Convenience extensions

What implemented?

Hash

Cipher
Message authenticators

Why

Why? Because I can.

Installation

Drag the CryptoSwift.xcodeproj file into your Xcode project, and add CryptoSwift.framework as a dependency for your target.

iOS and OSX

Bu default project is setup for iOS. You need to switch to OSX SDK manually see #8

Usage

import CryptoSwift

Generally you should use CryptoSwift.Hash,CryptoSwift.Cipher enums or convenience extensions

Hash enum usage

/* Hash enum usage */
var data:NSData = NSData(bytes: [49, 50, 51] as [Byte], length: 3)
if let data = CryptoSwift.Hash.md5(data).calculate() {
    println(data.hexString)
}

Hashing a data

let hash = data.md5()
let hash = data.sha1()
let hash = data.sha224()
let hash = data.sha256()
let hash = data.sha384()
let hash = data.sha512()

let crc = data.crc32()

println(hash.hexString)

Hashing a String and printing result

if let hash = "123".md5() {
    println(hash)
}

Working with Cipher

// convenience setup tuple
let setup = (key: keyData, iv: ivData)

// encrypt
if let encrypted = Cipher.ChaCha20(setup).encrypt(dataToEncrypt) {

    // decrypt
    if let decrypted = Cipher.ChaCha20(setup).decrypt(encrypted) {

        // validate result
        if (encrypted.isEqual(decrypted)) {
            print("Decryption failed!")
        }

    }
}

with extensions

// convenience setup tuple
let setup = (key: keyData, iv: ivData)

if let encrypted = dataToEncrypt.encrypt(Cipher.ChaCha20(setup)) {
    if let decrypted = encrypted.decrypt(Cipher.ChaCha20(setup)) {
        println(decrypted)
    }
}

Message authenticators

// Calculate Message Authentication Code (MAC) for message
let mac = Authenticator.Poly1305(key: key).authenticate(message)

Contact

Marcin Krzyżanowski @krzyzanowskim

Licence

see LICENSE file