Swift Crypto

跨平台加密库
授权协议 Apache-2.0
开发语言 C/C++ Python SHELL Swift
所属分类 程序开发、 加密/解密软件包
软件类型 开源软件
地区 不详
投 递 者 丌官高远
操作系统 跨平台
开源组织 Apple
适用人群 未知
 软件概览

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)
}
  • From: https://medium.com/@joncardasis/openssl-swift-everything-you-need-to-know-2a4f9f256462 OpenSSL + Swift: Everything You Need to Know   Jonathan Cardasis Follow May 1, 2018 · 6 min read          

  • swift编译 At last, a long-awaited feature comes to Swift. Swift 5.3 will enable you to add binary dependencies in Swift Package Manager. Why does this sound fantastic? Because before Swift 5.3, SPM (Swi

  • 在搭建好私人邮箱服务器后,正好做了一个共享主机的产品,就需要在申请共享主机后给用户发通知,遇到这个报错: PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_

  • Apple 发布了 Swift Crypto,这是 iOS 13 和 macOS Catalina 中附带的CryptoKit 框架的开源实现,使我们能够在 Linux 上使用相同的 API 进行加密和哈希处理。 Apple CryptoKit 文档中提供的示例。但是这些示例它没有说明这实际上是如何工作的。 您如何制作钥匙,以及如何在实践中使这种东西起作用。 创建密钥 import CryptoK

  • 写了几个语言的aes和rsa加密,这里记录一下,加密的东西不太懂,这里我只是按需求写的方法,可能不适合有的需求 下面使我们提的需求: 第一步 实现AES-256-CBC加密函数 aes_encrypt string data = "hasdfoe" string iv = "tdMgL6ryu5ueIjKq" string key = "RFzeuq4i27ZYpQReX5fIUnhJ8sf8s

  • swift通知栏推送 by Neo Ighodaro 由新Ighodaro 如何使用Swift和Laravel使用推送通知创建iOS加密跟踪应用 (How to create an iOS crypto tracking app with push notifications using Swift and Laravel) 第2部分 (Part 2) You will need the foll

  • ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/) ➤GitHub地址:https://github.com/strengthen/LeetCode ➤原文地址:https://www.cnblogs.com/st

  • swift加密 by Neo Ighodaro 由新Ighodaro 如何使用Swift和Laravel创建加密跟踪应用程序的后端 (How to create the backend of a crypto tracking app using Swift and Laravel) 第1部分 (Part 1) You will need the following installed on yo

  • SwiftyJSON tangplin, lingoer GitHub 上最为开发者认可的 JSON 解析库 JASON Damien 高速 JSON 解析类库 Argo thoughtbot 函数式 JSON 解析库 JSONCodable Matthew Cheok 基于 Swift 2 新特性的 JSON 解析库 Decodable Johannes Lund Swift 2 版 JSON

 相关资料
  • 我正在更新一个密码加密实用程序,从完全自带的东西到一个围绕Jasypt和Bouncy Castle构建的。实用程序加密密码;然后,加密的字符串被补丁到属性文件中,并由Grails应用程序回读和解密。 我编写了一个Java命令行实用程序来加密密码。相关的Java代码是:

  • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

  • 我需要在我的应用程序中为不同的标签指定不同的FontFamily。我需要使用默认字体(如Android的Roboto和iOS的Helvetica)及其修改(如轻、中、粗)。据我所知,我应该使用Roboto-Light和Helvetica-Light来获得字体的轻版本(中号和粗体相同)。除了这个需求之外,我还需要在XAML中设置字体(如文档中所描述的),所以我最终得到了以下代码 然而,在Androi

  • 作为第三代数据统计和分析平台,诸葛实现了对用户的实名(实账号)分析,并主张互联网产品分析以用户为中心的分析思想并提供了一系列方法论。对用户的唯一标识来源于企业自身数据库对用户的唯一识别符,也即诸葛底层数据采集是以用户为中心的采集,我们提供了跨平台分析版本, 满足企业以用户为中心的整体的分析需求,不同平台相同业务价值下的用户完整的故事解读(例如:分析电商的用户在PC端浏览产品,在移动端支付的转化率)

  • 说明 由于在跨端开发中,必不可少的会遇到不同端需要有不同实现的情况。参考滴滴chameleon中的多态,megalo中实现了类似的跨平台兼容方案。需要使用时,请保证@megalo/target的版本号大于或等于0.7.2。 js的跨平台兼容 megalo中下面两种形式的引用会被特殊处理: [path-to-name]/[name]/index.mpjs [path-to-name]/[name]

  • 问题内容: 我想在Unix和Windows上使用特定于平台的目录。请看一下代码: 这个输出 我想第二次打电话给(windows)类似 是否可以告诉我在Windows上运行的程序使用Windows分隔符?还是应该始终将反斜杠转换 为正斜杠()?这里首选的策略是什么? 问题答案: 我看到“问题”在哪里。在golang-nuts上的讨论为我提供了提示,该提示始终使用并且是用于依赖平台的操作的函数。 在W

  • 问题内容: 我想开发一个跨平台的应用程序。 Java是跨平台的吗?我的意思是,我可以在Windows中开发Java应用程序并在Mac OS X和Linux中使用它吗? 如果是,怎么办? 我发现用Java编写的应用程序有两个安装文件,一个用于Windows,另一个用于Mac。 这使我感到困惑。 任何插图或建议将不胜感激。 问题答案: Java是跨平台的吗? 从某种意义上说,Java是跨平台的, 即已

  • 是否有计划开发用于跨平台交互的CordaRPCOps,例如will there,或者是我可以使用Python或中的RPC连接到Corda节点的方法。网络?