swift md5

extension String  {
    var md5: String! {
        let str = self.cString(using:String.Encoding.utf8)
        let strLen = CUnsignedInt(self.lengthOfBytes(using: String.Encoding.utf8))
        let digestLen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
        
        CC_MD5(str!, strLen, result)
        
        let hash = NSMutableString()
        for i in 0..<digestLen {
            hash.appendFormat("%02x", result[i])
        }
        
        result.deallocate()
        
        return String(format: hash as String)
    }
}

extension NSData {
    
    func MD5() -> NSString {
        let digestLength = Int(CC_MD5_DIGEST_LENGTH)
        let md5Buffer = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLength)
        CC_MD5(bytes, CC_LONG(length), md5Buffer)
        let output = NSMutableString(capacity: Int(CC_MD5_DIGEST_LENGTH * 2))
        for i in 0..<digestLength {
            output.appendFormat("%02x", md5Buffer[i])
        }
        
        return NSString(format: output)
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 步骤1:必须添加oc桥接文件 在桥接文件中导入 步骤2:给String添加分类 这个代码是全部代码可以直接使用!
    透亮心情阅读 237评论 0 0
  • 1.随便新建一个OC文件会提示新建桥接文件xxx-Bridging-Header. 2.在桥接文件加入#impor...
    Str1ng阅读 1,110评论 0 0
  • 1,建立oc的桥接文件,可任意创建一个oc的文件,Xcode就会提示让创建桥接文件,要检查targets-buil...
    旅途开发者阅读 1,626评论 0 1
  • 一, 在Swift工程中创建桥接文件 1,创建一个OC类,并创建一个Bridging-Header 2,选择 Cr...
    _杜兜兜_阅读 506评论 0 0
  • Swift中有的时候会涉及数据加密问题,GitHub有开源的加密算法代码CryptoSwift。 MD5生成的是固...
    FlyElephant阅读 1,642评论 0 2