Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/muhasturk/bmhcrypto

BMHCrypto is a pure Swift packages built on CryptoKit, adds useful extensions and ready to use.
https://github.com/muhasturk/bmhcrypto

aes-encryption algorithms chipher crypto cryptography cryptokit decryption encryption extensions hashing swift swift-package-manager symmetric-key-cryptography xcode

Last synced: about 14 hours ago
JSON representation

BMHCrypto is a pure Swift packages built on CryptoKit, adds useful extensions and ready to use.

Awesome Lists containing this project

README

        


BMHCrypto










# BMHCrypto

BMHCrypto is a pure Swift packages built on CryptoKit, adds useful extensions and ready to use.

### Why?
Simplify usage of cryptographic operation such as hashing, encryption / decryption. Pure Swift, I am not gonna reinvent the wheel, package always will be based on CryptoKit or whatever released by Apple.

## ๐Ÿ“‹ Requirements

- **iOS** 13.0+ / **tvOS** 13.0+ / **watchOS** 6.0+ / **macOS** 10.15+
- Swift 5.0+

## ๐Ÿ“ฒ Installation

Swift Package Manager

#### Xcode Project
Swift Package Manager is built into new versions of Xcode. To install `BMHCrypto` with SPM:

- Open your project in Xcode

- Click "File" -> "Swift Packages" -> "Add Package Dependency..."

- Paste the following URL:

`https://github.com/muhasturk/BMHCrypto.git`

- Click "Next" -> "Next" -> "Finish"

#### As Dependecy

You can use The Swift Package Manager to install BMHCrypto by adding the proper description to your Package.swift file:

```swift
import PackageDescription

let package = Package(
name: "YOUR_PROJECT_NAME",
targets: [],
dependencies: [
.package(url: "https://github.com/muhasturk/BMHCrypto.git", from: "0.1.0")
]
)
```

Next, add BMHCrypto to your targets dependencies like so:

```swift
.target(
name: "YOUR_TARGET_NAME",
dependencies: [
"BMHCrypto",
]
),
```

Then run swift package update.

## ๐ŸŽ Features

- Insecure Hash
- [x] MD5
- [x] SHA1
> **_Important:_** These algorithms arenโ€™t considered cryptographically secure, but are provided for backward compatibility with older services that require them. For new services, avoid these algorithms.

- Cryptographically Secure Hashes
- [x] SHA256
- [x] SHA384
- [x] SHA512

- Ciphers
- [x] AES
- [x] ChaChaPoly

- Message Authentication Codes
- [ ] HMAC
- [x] SymmetricKey

- [ ] Public-Key Cryptography

## ๐Ÿ”ฅ Usage
Do not forget to import
```swift
import BMHCrypto
```
### Hashing

```swift
// Anything That Conforms DataProtocol
let plainText = "BMH"
```

```swift
// Returns String Representation
plainText.md5
plainText.sha1
plainText.sha256
plainText.sha384
plainText.sha512
```

### Ciphers

- ChaChaPoly
```swift
// Share Same Key
let key = SymmetricKey(size: .bits256)

// Plain Data Could Be Anything
let data = Data()

// Encrypt
let encrypted = data.encryptChaChaPoly(with: key)

// Decrypt
let decrypted = encrypted.decryptChaChaPoly(with: key)
```

- AES
```swift
// Share Same Key
let key = SymmetricKey(size: .bits256)

// Plain Data Could Be Anything
let data = Data()

// Encrypt
let encrypted = data.encryptAES(with: key)

// Decrypt
let decrypted = encrypted?.decryptAES(with: key)
```

### Sharing Key
```swift
let key = SymmetricKey(size: .bits256)

// Shareable String Key
let savedKey = key.base64EncodedString

// Ready to Use SymmetricKey
let convertedKey = savedKey.asSymmetricKey
```

## ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Author
Mustafa Hasturk
๐Ÿ“ง mustafa[at]hasturk.dev

## โค๏ธ Contributing
Bug reports and pull requests are welcome.

## ๐Ÿ‘ฎ๐Ÿปโ€โ™‚๏ธ License

BMHCrypto is released under the MIT license. See [LICENSE](https://github.com/muhasturk/BMHCrypto/blob/master/LICENSE) for more information.