String+Extension.swift 825 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. //
  2. // String+Extension.swift
  3. // Runner
  4. //
  5. // Created by Destiny on 2025/6/18.
  6. //
  7. import Foundation
  8. import CommonCrypto
  9. extension String {
  10. /// 原生md5
  11. public var md5: String {
  12. guard let data = data(using: .utf8) else {
  13. return self
  14. }
  15. var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
  16. #if swift(>=5.0)
  17. _ = data.withUnsafeBytes { (bytes: UnsafeRawBufferPointer) in
  18. return CC_MD5(bytes.baseAddress, CC_LONG(data.count), &digest)
  19. }
  20. #else
  21. _ = data.withUnsafeBytes { bytes in
  22. return CC_MD5(bytes, CC_LONG(data.count), &digest)
  23. }
  24. #endif
  25. return digest.map { String(format: "%02x", $0) }.joined()
  26. }
  27. }