gpt4 book ai didi

ios - Swift 中的 SHA256 - 导入框架问题

转载 作者:IT王子 更新时间:2023-10-29 05:28:46 25 4
gpt4 key购买 nike

我试图在 Swift 中的一个函数中使用 CC_SHA256_DIGEST_LENGTH,但它抛出了一个错误,因为它找不到该符号。我已经尝试了所有方法,在桥头中导入 CommonCrypto 并尝试了 .map 解决方案。没有任何效果。

如何在 Swift 中使用 CC_SHA256_DIGEST_LENGTH?所有解决方案似乎都已停止工作。谢谢!

最佳答案

将以下行添加到您的桥接头:
ojit_代码

swift 2.x 示例:

func doSha256(#dataIn:NSData) -> NSData {
var shaOut: NSMutableData! = NSMutableData(length: Int(CC_SHA256_DIGEST_LENGTH));
CC_SHA256(dataIn.bytes, CC_LONG(dataIn.length), UnsafeMutablePointer<UInt8>(shaOut.mutableBytes));

return shaOut;
}

swift 3.0 示例:

func hashSHA256(data:Data) -> Data? {
var hashData = Data(count: Int(CC_SHA256_DIGEST_LENGTH))
_ = hashData.withUnsafeMutableBytes {digestBytes in
data.withUnsafeBytes {messageBytes in
CC_SHA256(messageBytes, CC_LONG(data.count), digestBytes)
}
}
return hashData
}

let clearData = "clearData0123456".data(using:String.Encoding.utf8)!
print("clearData: \(clearData.map { String(format: "%02hhx", $0) }.joined())")

let hash = hashSHA256(data:clearData)
print("hash: \(hash!.map { String(format: "%02hhx", $0) }.joined())")

输出:

clearData: 636c6561724461746130313233343536
hash: aabc766b6b357564e41f4f912d494bccbfa16924b574abbdba9e3e9da0c8920a

我没有在目标构建阶段中添加任何框架。
您确定桥接头设置正确吗?我通过添加一个 .m 文件来添加我的,并让系统自动添加桥接头并更新任何目标设置。

General hash method moved from the sunsetted documentation section:

这个函数接受一个散列名称和要散列的数据并返回一个数据:

name: A name of a hash function as a String  data: The Data to be hashed  returns: the hashed result as Data  
func hash(name:String, data:Data) -> Data? {
let algos = ["MD2": (CC_MD2, CC_MD2_DIGEST_LENGTH),
"MD4": (CC_MD4, CC_MD4_DIGEST_LENGTH),
"MD5": (CC_MD5, CC_MD5_DIGEST_LENGTH),
"SHA1": (CC_SHA1, CC_SHA1_DIGEST_LENGTH),
"SHA224": (CC_SHA224, CC_SHA224_DIGEST_LENGTH),
"SHA256": (CC_SHA256, CC_SHA256_DIGEST_LENGTH),
"SHA384": (CC_SHA384, CC_SHA384_DIGEST_LENGTH),
"SHA512": (CC_SHA512, CC_SHA512_DIGEST_LENGTH)]
guard let (hashAlgorithm, length) = algos[name] else { return nil }
var hashData = Data(count: Int(length))

_ = hashData.withUnsafeMutableBytes {digestBytes in
data.withUnsafeBytes {messageBytes in
hashAlgorithm(messageBytes, CC_LONG(data.count), digestBytes)
}
}
return hashData
}

注意:MD2、MD4、MD5 和 SHA1 不应在新工作中使用,它们对于消息摘要的使用不再安全。

关于ios - Swift 中的 SHA256 - 导入框架问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26449878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com