Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3 测试我的MD5 Swift 3代码_Swift3_Md5_Commoncrypto - Fatal编程技术网

Swift3 测试我的MD5 Swift 3代码

Swift3 测试我的MD5 Swift 3代码,swift3,md5,commoncrypto,Swift3,Md5,Commoncrypto,我有一些代码可以从文件数据生成MD5字符串: extension Data { func hexString() -> String { let string = self.map{ String($0, radix:16) }.joined() // "45769ca7ec1ac00cec11df87df982b7d" return string } func MD5() -> Data { var result = Data(count: I

我有一些代码可以从文件数据生成MD5字符串:

extension Data {

func hexString() -> String {
    let string = self.map{ String($0, radix:16) }.joined()

    // "45769ca7ec1ac00cec11df87df982b7d"
    return string
}

func MD5() -> Data {
    var result = Data(count: Int(CC_MD5_DIGEST_LENGTH))
    _ = result.withUnsafeMutableBytes {resultPtr in
        self.withUnsafeBytes {(bytes: UnsafePointer<UInt8>) in
            CC_MD5(bytes, CC_LONG(count), resultPtr)
        }
    }
    return result
}
}

extension String {
    func hexString() -> String {
        return self.data(using: .utf8)!.hexString()
    }

    func MD5() -> String {
        return self.data(using: .utf8)!.MD5().hexString()
    }
}
第二,是否有一个web工具可以用来上传我的文件并取回它的MD5字符串

更新:我在在线MD5工具中测试了我的文件,得到了以下哈希值:
F0750875A790471702E9D2D34433729A
但是我的代码产生了这样的结果:
F075875A7904772E9D2D34433729A


看起来很近!一定是我分机里的什么东西。Swift 3中是否有更好的MD5解决方案?

好的。我找到了一个很好的解决方案:

extension Data {

var md5String:String {

    var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))

    var digestHex = ""
    self.withUnsafeBytes { (bytes: UnsafePointer<CChar>) -> Void in

        CC_MD5(bytes, CC_LONG(self.count), &digest)
        for index in 0..<Int(CC_MD5_DIGEST_LENGTH) {
            digestHex += String(format: "%02x", digest[index])
        }
    }
    return digestHex
  }

}
我发现了一个网络工具:
extension Data {

var md5String:String {

    var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))

    var digestHex = ""
    self.withUnsafeBytes { (bytes: UnsafePointer<CChar>) -> Void in

        CC_MD5(bytes, CC_LONG(self.count), &digest)
        for index in 0..<Int(CC_MD5_DIGEST_LENGTH) {
            digestHex += String(format: "%02x", digest[index])
        }
    }
    return digestHex
  }

}
extension String {

func MD5() -> String {
    return self.data(using: .utf8)!.md5String
}
}