跨平台加密库 Swift Crypto

Apache-2.0
跨平台
Apple
2020-02-05
局长

疫情之下,程序员如何转型?共享数字化转型加速度,就在微软在线技术峰会>>>

Swift Crypto 衍生自 Apple CryptoKit 加密框架,是一个跨平台加密解决方案,可用于 Swift 支持的所有平台。

Crypto 将 Apple CryptoKit 优秀的 API 带到了受众更广的 Swift 社区,无论应用部署在哪个平台上,Swift 开发者都可以访问这些 API,以进行通用的加密操作。也就意味着,在所有平台上 Swift 开发者可以轻松通过以下代码获取所有 CryptoKit API:

import Crypto

Swift Crypto 加密库由两部分组成,在 Apple 平台上,Swift Crypto 依循 Apple CryptoKit 加密框架,提供 Apple CryptoKit 的 API,而在其他平台上,Swift Crypto 则使用了以 Boring SSL 函数库为基础构建的全新实现,目标是提供一个可在所有平台轻松访问的简单易用的安全加密 API,让开发者用于编写跨平台加密代码。

示例

通过 Swift Crypto,开发者可轻松实现许多强大的功能。例如,隐藏您的数据并阻止攻击者尝试使用 AES GCM 对其进行修改的安全身份验证加密:

func encrypt(input: [UInt8]) throws -> Data {
    // Don't forget to save your key somewhere!
    let key = SymmetricKey(size: .bits256)
    let sealedBox = try AES.GCM.seal(input, using: key)
    return sealedBox.combined!
}

此代码避免了我们自己构建加密方案时可能遇到的众多陷阱。例如,它确保你使用的是随机选择的 Nonce 数值,并且对密文进行身份验证。两者都可以防止对系统的各种攻击,但这些功能在许多其他加密库中不一定会自动应用。

同样,生成消息身份验证代码也很简单,我们可以使用它来确保数据不被篡改:

func authenticate(message: [UInt8]) -> [UInt8] {
    // Again, don't forget to save your keys!
    let key = SymmetricKey(size: .bits256)
    return Array(HMAC<SHA256>.authenticationCode(for: message, using: key))
}

Swift Crypto 甚至涵盖了执行椭圆曲线密钥交换的相当复杂的逻辑。例如,使用 Curve25519 生成共享密钥:

func curve25519SharedSecret(myKey: Curve25519.KeyAgreement.PrivateKey, theirKeyBytes: [UInt8]) throws -> SharedSecret {
    let theirKey = try Curve25519.KeyAgreement.PublicKey(rawRepresentation: theirKeyBytes)
    return try myKey.sharedSecretFromKeyAgreement(with: theirKey)
}
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

Swift 新增跨平台加密库 Crypto

Swift 开发团队近日在博客介绍了为 Swift 生态系统引入的一个全新开源项目 Swift Crypto。Crypto 衍生自 Apple CryptoKit 加密框架,是一个跨平台加密解决方案,可用于 Swift 支持的所有平台...

02/05 08:30

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

kolla-ansible解析

项目地址 https://github.com/openstack/kolla-ansible https://git.openstack.org/cgit/openstack/kolla-ansible/ kolla-ansible部署的大致流程 执行命令Kolla-ansible –i multinode deplo...

2017/11/01 11:22
1.7K
0
Swift 开源精选-v1.0(基础篇)

Swift 开源项目

2016/03/07 20:13
942
1
使用windows crypto API加密解密

其实,使用windows API编程并不难,首先要有信心。MSDN提供了详细的帮助和指南,许多问题,只要详细查阅MSND,完全可以不用在网上查找任何资料完成自己所需要的编程任务。 首先,大家不要觉得...

2016/12/08 10:57
52
0
Swift 概述及Swift运算符和表达式

Swift 概述及Swift运算符和表达式

2014/06/11 17:31
86
0
从Java到Swift

我们学习的新事物时,通常并不是从0开始,而是从已知开始,将新事物与已知的进行比较分析,从而快速全面地了解新事物。

2016/03/14 18:06
690
1
appearanceWhenContainedIn in Swift

appearanceWhenContainedIn in Swift

2016/05/14 09:35
27
2
在同个工程中使用 Swift 和 Objective-C(Swift 2.0更新)

本节包含内容: Mix and Match 概述(Mix and Match Overview) 在同个应用的 target 中导入(Importing Code from Within the Same App Target) 在同个 Framework 的 target 中导入(Impor...

2016/03/01 18:04
34
1
Swift_Swift与objC之间的相互调用

假如你现在有一个 swift 类 LoginViewContrller.swift, 但是工程是objc的工程:AppDelegate.h/.m 现在设置AppDelegate的rootviewcontroller为 LoginViewContrller 1. 在target -> build set...

2014/07/08 11:39
184
0
Swift3.0发布过程

本文翻译自官网Blog: https://swift.org/blog/swift-3-0-release-process/ 本文将阐述Swift 3.0的目标,发布过程以及预估进度. Swift 3.0是一个与Swift 2.2源码不兼容的主发行版. 这个版本在...

2016/05/30 17:06
2K
0
Swift的一些翻译1:Swift Playgrounds

一些废话就没翻译了.有错误欢迎指出.😉

2015/12/03 00:14
999
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部