关闭

ios swift sha1 md5 加密

标签: iosswiftsha1md5加密
1515人阅读 评论(0) 收藏 举报
分类:

在Swift中通过调用OC的CommonCrypto库可以很方便的实现String字符串转换为sha1。

在一个swift项目中,需要使用桥接头文件(Bridging header)的方式来引入一个OC库,才能调用OC中的内容。

新建一个Objective-C  m文件

xode自动为我们创建了一个swift和OC桥接的文件:项目名-Bridging-Header.h

在Bridging-Header.h文件中输入:

#import <CommonCrypto/CommonCrypto.h>


在自己的swift类中扩展String方法


extension String {

    
    //sha1加密算法
    func getSha1() -> String {
        let data = self.dataUsingEncoding(NSUTF8StringEncoding)!
        var digest = [UInt8](count:Int(CC_SHA1_DIGEST_LENGTH), repeatedValue: 0)
        CC_SHA1(data.bytes, CC_LONG(data.length), &digest)
        let output = NSMutableString(capacity: Int(CC_SHA1_DIGEST_LENGTH))
        for byte in digest {
            output.appendFormat("%02x", byte)
        }
        return output as String
    }
    
}

extension String {
    //md5加密算法
    func getMd5() -> String {
        let str = self.cStringUsingEncoding(NSUTF8StringEncoding)
        let strLen = CUnsignedInt(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
        let digestLen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)
            
        CC_MD5(str!, strLen, result)
            
        let hash = NSMutableString()
        for i in 0..<digestLen {
            hash.appendFormat("%02x", result[i])
        }
            
        result.dealloc(digestLen)
            
        return String(hash)
    }

}

使用:

let s = "zhangsan"

print(s.getSha1())

print(s.getMd5())



0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:35740次
    • 积分:829
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:8篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论