Swift Crypto 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Swift Crypto 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: 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)
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

Swift Crypto 的相关资讯

Swift Crypto 的相关博客

bugku crypto easy-crypto

0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111...

java crypto

### hMac > "HmacMD5","HmacSHA1", "HmacSHA256", "HmacSHA384", "HmacSHA512" ``` public void testHMac(String filePath, S...

Crypto 模块安装

crypto模块的目的是为了提供通用的加密和哈希算法。 AES是一种常用的对称加密算法,加解密都用同一个密钥。crypto模块提供了A...

crypto 的使用方法和说明

crypto 模块提供了加密功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。我们这里讲crypto ...

Crypto API 学习

Crypto API 学习 链 接:http://bbs.pediy.com/showthread.php?threadid=31357 微软公司在NT4.0以上版本中提供了一套完整的C...

crypto加密

crtyto模块提供了加密功能,内部主要是对一些加密算法的封装。 主要有,1:Certificate类:这是一种证书签名请求机制,用来处...

[crypto] AEAD是啥

AEAD这个缩写根据不同的语境有两个理解角度:认证加密机制,认证加密方式。 认证加密机制是指:一些用来完成认证加密工作的方...

crypto加密解密

加密Crypto# 使用require('crypto') 可以访问该模块。 加密模块要求底层系统的OpenSSL是支持的。它提供了一个安全证书,作为一...

Crypto加密解密

crypto 模块提供了加密功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。我们这里讲crypto ...

Crypto加密解密

crypto 模块提供了加密功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。我们这里讲crypto ...

Swift Crypto 的相关问答

还没有任何问答,马上提问

评论 (0)

加载中
更多评论
0 评论
5 收藏
分享
返回顶部
顶部