Swift Crypto跨平台加密库
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)
}
评论
EverCrypt跨平台的现代加密库
程序员都是凡人,但数学则是不朽的。通过让编程变得更数学化,计算机科学家希望能消除向黑客敞开大门的编程错误。研究人员在GitHub上发布了加密工具 EverCrypt,向这个目标迈出了一大步。就像证明毕
EverCrypt跨平台的现代加密库
0
Tink多语言、跨平台加密开发库
Tink是一个多语言、跨平台的加密开发库,提供安全,易于正确使用和难以滥用的加密API,目前Tink已经被用于保护许多谷歌内部产品的数据,如AdMob、GooglePay、GoogleAssistan
Tink多语言、跨平台加密开发库
0
ZThread跨平台线程库
ZThread是一个C++的跨平台线程开发包。zthread库的用法和Java的多线程很相似,名字都差不多,比如Thread,Runnable,^_^举个例子入门一下吧在zthread里有一个任务的概
ZThread跨平台线程库
0
bgfx跨平台渲染库
bgfx是一个跨平台、与图形API无关,"可打造个性引擎/框架“风格的渲染库。 支持的渲染后端:Direct3D9Direct3D11Direct3D12(WIP)OpenGL2.1OpenGL3.
bgfx跨平台渲染库
0