在纯 Swift (Vapor) 项目中拥有 HMAC SHA256

Posted

技术标签:

【中文标题】在纯 Swift (Vapor) 项目中拥有 HMAC SHA256【英文标题】:have HMAC SHA256 in pure Swift (Vapor) project 【发布时间】:2016-09-01 20:34:39 【问题描述】:

我是基于 Swift 的 Vapor 后端框架的新手,我刚刚设置了 HelloWorld 项目。

我需要使用 HMAC SHA256 算法来加密数据。我在网上搜索,找到something like this,但都是基于ios或OSX框架,使用C库,可以通过import <CommonCrypto/CommonHMAC.h>添加。

如何将 CommonCrypto 或 HMAC 添加到我的 Vapor 项目中?如果不可能,我怎么能有一个纯 swift HMAC Sha256 算法?有没有我可以添加到 Package.swift 的依赖项?

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

如果您使用的是 Vapor 0.17 或更高版本,您应该可以使用 import HMACimport SHA2

从那里您可以使用 HMAC 轻松创建 SHA1 哈希。

查看 Vapor 使用的 Crypto 包:https://github.com/vapor/crypto

此外,Vapor 的默认哈希是带有 HMAC 的 SHA256。所以你可以做drop.hash.make("foo"),这样就可以了。

【讨论】:

【参考方案2】:

您应该能够使用CryptoSwift 项目或至少是其中的代码。

这在 Mac 或 iOS 设备上是一个糟糕的解决方案,因为它没有硬件支持并且比 Apple 的 Common Crypto 慢数百到 1000 倍。但仅在代码中尽可能快。

【讨论】:

【参考方案3】:

同意@zaph 的回答,如果您想使用更优化和快速的解决方案,请使用 SPM (https://github.com/Zewo/OpenSSL) 快速导入 OpenSSL,然后使用基于 OpenSSL 的 HMAC api。

参考:https://github.com/yoshiki/HMACHash/blob/master/Sources/HMACHash.swift

【讨论】:

以上是关于在纯 Swift (Vapor) 项目中拥有 HMAC SHA256的主要内容,如果未能解决你的问题,请参考以下文章

使用Swift4+Vapor写后端-初体验

Vapor 不适用于 xcode 9 和 swift 4

在MacOS上创建一个 hello Vapor 后台项目

Vapor - 尝试手动设置启动项目

无法在 Vapor 项目中连接我的 MySQL 数据库

从 Vapor 3 到 Vapor 4 的 LingoVapor 包