diff --git a/QuickLocation/API/SignPlugin.swift b/QuickLocation/API/SignPlugin.swift index 9425f6c2..261083f5 100644 --- a/QuickLocation/API/SignPlugin.swift +++ b/QuickLocation/API/SignPlugin.swift @@ -1,6 +1,5 @@ import Foundation import Moya -import CommonCrypto /// JiaMiKey 的 MD5,预计算避免每次请求都算 private let jiaMiKeyMD5: String = { @@ -73,10 +72,6 @@ final class SignPlugin: PluginType { } fileprivate static func md5(_ string: String) -> String { - let cStr = string.cString(using: .utf8) - let length = CC_LONG(strlen(cStr!)) - var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH)) - CC_MD5(cStr, length, &digest) - return digest.map { String(format: "%02x", $0) }.joined() + string.md5 } } diff --git a/QuickLocation/Core/Extension/String+Extension.swift b/QuickLocation/Core/Extension/String+Extension.swift index 48628ac3..9a399c05 100644 --- a/QuickLocation/Core/Extension/String+Extension.swift +++ b/QuickLocation/Core/Extension/String+Extension.swift @@ -9,6 +9,7 @@ import Foundation import SwiftyJSON import CommonCrypto +import CryptoKit import URLNavigator import SwiftDate @@ -53,29 +54,7 @@ public extension String { // MARK: md5 public extension String { - var MD5String: String { - - let cStrl = cString(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)); - - let buffer = UnsafeMutablePointer.allocate(capacity: 16); - - CC_MD5(cStrl, CC_LONG(strlen(cStrl!)), buffer); - - var md5String = ""; - - for idx in 0...15 { - - let obcStrl = String.init(format: "%02x", buffer[idx]); - - md5String.append(obcStrl); - - } - - free(buffer); - - return md5String; - - } + var MD5String: String { md5 } } // MARK: Base64 @@ -93,13 +72,7 @@ public extension String { public extension String { - var md5: String { - let data = self.data - var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH)) - CC_MD5((data as NSData).bytes, CC_LONG(data.count), &digest) - let hexBytes = digest.map { String(format: "%02hhx", $0) } - return hexBytes.joined(separator: "") - } + var md5: String { data.md5Hex } var sha1: String { let data = self.data @@ -216,6 +189,10 @@ public extension Data { var string: String { return String(data: self, encoding: String.Encoding.utf8) ?? "" } + + var md5Hex: String { + Insecure.MD5.hash(data: self).map { String(format: "%02x", $0) }.joined() + } } // MARK: - Int diff --git a/QuickLocation/Manager/App/ApiManager.swift b/QuickLocation/Manager/App/ApiManager.swift index b96f30a0..49c2eaed 100644 --- a/QuickLocation/Manager/App/ApiManager.swift +++ b/QuickLocation/Manager/App/ApiManager.swift @@ -257,17 +257,7 @@ extension ApiManager { } class func getMd5_32Bit_String(_ srcString: String, isUppercase: Bool) -> String { - let cStr = srcString.cString(using: .utf8) - let length = CC_LONG(strlen(cStr!)) - var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH)) - - CC_MD5(cStr, length, &digest) - - var result = "" - for i in 0.. String { - md5(Data(string.utf8)) + string.md5 } private static func md5(_ data: Data) -> String { - var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH)) - data.withUnsafeBytes { buffer in - _ = CC_MD5(buffer.baseAddress, CC_LONG(data.count), &digest) - } - return digest.map { String(format: "%02x", $0) }.joined() + data.md5Hex } private static func makeError(_ message: String) -> NSError {