关于
Shamir's Secret Sharing 算法的纯 Swift 实现。SwiftySSS 是一个库,它暴露了一个 API,将秘密数据缓冲区拆分为多个不同的份额。拥有这些份额中的某些或全部,可以恢复原始秘密。您可以在下面的示例项目中看到演示应用程序
示例
如何拆分
let message = Data([UInt8]("Hello World!".utf8))
let secret = try! Secret(data: message, threshold: 3, shares: 5)
let shares = try! secret.split()
shares.forEach { share in
print(share.description)
}
//print
//1-8d736120eef1ca0b2b58971c
//2-1b46510ea3e09d828f9a217c
//3-de505c42223100e6d6aed241
//4-cb1f8a6d9544593ab4d53807
//5-0e0987211495c45eede1cb3a
如何合并
let share1 = "1-8d736120eef1ca0b2b58971c"
let share2 = "2-1b46510ea3e09d828f9a217c"
let share3 = "3-de505c42223100e6d6aed241"
let share4 = "4-cb1f8a6d9544593ab4d53807"
let share5 = "5-0e0987211495c45eede1cb3a"
let sharesStings = [share1, share2, share3, share4, share5]
let sharesObjects = sharesStings.compactMap { try? Secret.Share(string: $0) }
let someShares = [Secret.Share](sharesObjects[1...3])
let secretData = try! Secret.combine(shares: someShares)
let secret = String(data: secretData, encoding: .utf8)
print(secret)
//print
//Hello World!
安装
CocoaPods
pod 'SwiftySSS', '~> 0.0.1'
贡献与许可证
基于MIT许可证分发。更多信息请参阅LICENSE。