在Swift中通过调用OC的CommonCrypto库可以很方便的实现String字符串转换为sha1。
在一个swift项目中,需要使用桥接头文件(Bridging header)的方式来引入一个OC库,才能调用OC中的内容。
新建一个Objective-C m文件
在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())