gpt4 book ai didi

swift - Swift 3 中数据的 MD5

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

我正在尝试获取我的数据的 MD5 哈希值(从互联网下载的图像)。不幸的是,我已经将框架升级到 swift 3,我一直使用的方法现在不起作用。

我已经转换了其中的大部分,但我无法从数据中获取字节:

import Foundation
import CommonCrypto


struct MD5 {

static func get(data: Data) -> String {
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
CC_MD5(data.bytes, CC_LONG(data.count), &digest)

var digestHex = ""
for index in 0..<Int(CC_MD5_DIGEST_LENGTH) {
digestHex += String(format: "%02x", digest[index])
}

return digestHex
}

}

CommonCrypto 已作为自定义模块导入。问题是我得到 'bytes' is unavailable: use withUnsafeBytes instead on CC_MD5(data.bytes,...

所以真正的问题是,我如何从数据中获取字节,这个解决方案是否有效?

最佳答案

    CC_MD5(data.bytes, CC_LONG(data.count), &digest)

如前所述,bytes 不可用,因为它很危险。它是指向内存的原始指针,不会消失。推荐的解决方案是使用 withUnsafeBytes,它保证目标不会在指针范围内消失。根据内存,它看起来像这样:

data.withUnsafeBytes { bytes in
CC_MD5(bytes, CC_LONG(data.count), &digest)
}

重点是 bytes 指针无法转义到 data 不再有效的范围内。

有关 CCHmac 的示例,它与 MD5 非常相似,请参阅 RNCryptor .

关于swift - Swift 3 中数据的 MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39400495/

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