UncommonCrypto 0.2.1

UncommonCrypto 0.2.1

Yehor Popovych 维护。



  • Tesseract Systems, Inc.

UncommonCrypto.swift

🐧 linux: ready GitHub license Build Status GitHub release SPM compatible CocoaPods version Platform macOS | iOS | tvOS | watchOS | Linux

CommonCrypto 的封装,为 Linux 提供了替代的 C 实现。

替代的 C 实现来自 trezor-crypto 仓库

安装

UncommonCrypto.swift 已部署到 macOS、iOS、tvOS、watchOS 和 Linux。它仅在最新的操作系统版本上进行了测试,但由于该模块使用的平台提供的 API 非常少,因此应该很少有与早期版本相关的问题。

UncommonCrypto.swift 可移植到更多平台。如果操作系统有内置的加密 API,则可以使用它们来替代提供的 C 版本。在 Apple 平台上,库使用 CommonCrypto 框架。还应移植安全的随机生成器。

配置说明

  • Swift 包管理器:将此内容添加到您的 Package.swift 示意图的依赖部分

    .package(url: "https://github.com/tesseract-one/UncommonCrypto.swift.git", from: "0.1.0")
  • CocoaPods:在您的 Podfile 中输入以下内容

    pod 'UncommonCrypto', '~> 0.1'

使用示例

SHA1

import UncommonCrypto

// Some data
let data = Data()

// Simple call API
let hash1 = SHA1.hash(data: data)

// Streaming api
var sha1 = SHA1()
sha1.update(data)
let hash2 = sha1.finalize()

assert(hash1 == hash2)

SHA2

import UncommonCrypto

// Some data
let data = Data()

// Simple call API. SHA256 and SHA512 are supported
let hash1 = SHA2.hash(type: .sha256, data: data)

// Streaming api
var sha2 = SHA2(type: .sha256)
sha2.update(data)
let hash2 = sha2.finalize()

assert(hash1 == hash2)

SHA3

import UncommonCrypto

// Some data
let data = Data()

// Simple call API. Different Keccak and SHA3 variants supported.
let hash1 = SHA3.hash(type: .sha256, data: data)

// Streaming api
var sha3 = SHA3(type: .sha256)
sha3.update(data)
let hash2 = sha3.finalize()

assert(hash1 == hash2)

HMAC

import UncommonCrypto

// Some data
let data = Data()

// Some key
let key = [UInt8]()

// Simple call API. SHA256 and SHA512 are supported
let sign1 = HMAC.authenticate(type: .sha256, key: key, data: data)

// Streaming api
var hmac = HMAC(type: .sha256, key: key)
hmac.update(data)
let sign2 = hmac.finalize()

assert(sign1 == sign2)

PBKDF2

import UncommonCrypto

let salt = [UInt8]()
let password = [UInt8]()

// SHA512 or SHA256 HMAC can be used
let derived = try! PBKDF2.derive(type: .sha512, password: password, salt: salt) 

print("Derived: ", derived)

许可协议

UncommonCrypto.swift 可根据 Apache 2.0 许可协议 进行使用、分发和修改。