Swift 新增跨平台加密库 Crypto
Swift 开发团队近日在博客介绍了为 Swift 生态系统引入的一个全新开源项目 Swift Crypto。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) }
这些简单但功能强大的 API 最终让开发者获益甚多,我们现在可以通过它构建安全的跨平台加密方案,而几乎不需要编写代码,也不需要太多的专业知识。
由于 Swift Crypto 的核心目标是提供跨平台的解决方案,以便在更多平台上使用 Apple CryptoKit 的 API,因此该 API 自然会跟随 Apple CryptoKit 本身的发展。但考虑到 Swift Crypto 是一个开源项目,因此在一定程度上开发者也可以直接向 Swift Crypto 提议 API。根据这些 API 的适用范围,苹果也会考虑在 Apple CryptoKit 中并行实现它们。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
nutz-spring-boot-starter 2.2.4.RELEASE 发布
nutz-spring-boot-starter 2.2.4.RELEASE发布了,主要包含以下更新内容: spring-boot版本升级至2.2.4.RELEASE 删除部分标注过期的方法 添加通用service相关方法注释内容 用新的API进行demo改造 最新版本maven坐标如下: <dependency> <groupId>org.nutz</groupId> <artifactId>nutz-spring-boot-starter</artifactId> <version>2.2.4.RELEASE</version> </dependency>
- 下一篇
Windows 10 市场份额突破 57%,Chrome 持续下滑
调研机构 NetMarketShare发布了2020 年 1 月的最新数据,Windows 不同版本操作系统的市场份额出现较大波动。Windows 7 在 1 月正式退役,市场占有率由 29.57% 跌至 25.56%。与此同时,Windows 10 市场占有率环比增加 3.72%,达到 57.08%。 2019 年 1 月,Windows 10 市场份额首度超越 Windows 7,为 39.22%;同年 8 月,Windows 10 市场份额首度突破 50%,此后波动一直较为平缓,直至上个月 Windows 7 停止接受支持。 排在第三位的 Windows 8.1 此前连月持续下跌,但上个月有了 0.07% 的微小幅度增长,市场份额为 3.38%。紧接着是差距不大的 Mac OS X 10.14,市场份额 3.12%,略微下降。 浏览器方面稳定如常。Chrome 的市场份额依然占最大头,即便它从去年 9 月以来在持续下跌,并且上月环比下降 1.13%,但仍保有 66.93% 占有率。第二名 Firefox 的市场份额也略有下降,由 8.27% 降至 8.12%。 上个月,新版Chr...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路