您必须在
Int和之间进行显
CC_LONG式转换,因为Swift不会像(Objective-)C中那样进行隐式转换。
您还必须定义
hash为所需大小的数组。
func sha256(data: NSData) -> NSData { var hash = [UInt8](count: Int(CC_SHA256_DIGEST_LENGTH), repeatedValue: 0) CC_SHA256(data.bytes, CC_LONG(data.length), &hash) let res = NSData(bytes: hash, length: Int(CC_SHA256_DIGEST_LENGTH)) return res}
另外,您可以
NSMutableData用来分配所需的缓冲区:
func sha256(data: NSData) -> NSData { let res = NSMutableData(length: Int(CC_SHA256_DIGEST_LENGTH)) CC_SHA256(data.bytes, CC_LONG(data.length), UnsafeMutablePointer(res.mutableBytes)) return res}
Swift 3和4的更新:
func sha256(data: Data) -> Data { var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH)) data.withUnsafeBytes { _ = CC_SHA256(Swift 5更新:, CC_LONG(data.count), &hash) } return Data(bytes: hash)}
func sha256(data: Data) -> Data { var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH)) data.withUnsafeBytes { _ = CC_SHA256(.baseAddress, CC_LONG(data.count), &hash) } return Data(hash)}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)