md5/sha1
//
// String+Crypto.swift
// PasteboardShelf
//
// Created by SetMinami on 2016/11/10.
// Copyright © 2016年 setMinami Software Lab. All rights reserved.
//
import Foundation
extension String {
internal func md5() -> String {
let string = self
let context = UnsafeMutablePointer<CC_MD5_CTX>.allocate(capacity: 1)
var digest = Array<UInt8>(repeating:0, count:Int(CC_MD5_DIGEST_LENGTH))
CC_MD5_Init(context)
CC_MD5_Update(context, string, CC_LONG(string.lengthOfBytes(using: String.Encoding.utf8)))
CC_MD5_Final(&digest, context)
context.deallocate(capacity: 1)
var hexString = ""
for byte in digest {
hexString += String(format:"%02x", byte)
}
return hexString
}
internal func sha1() -> String {
let str = self.cString(using: String.Encoding.utf8)
let strLen = CC_LONG(self.lengthOfBytes(using: String.Encoding.utf8))
let digestLen = Int(CC_SHA1_DIGEST_LENGTH)
let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
CC_SHA1(str!, strLen, result)
let hash = NSMutableString()
for i in 0..<digestLen {
hash.appendFormat("%02x", result[i])
}
result.deinitialize()
return String(hash)
}
}//
// Bridging-Header.h
// PasteboardShelf
//
// Created by SetMinami on 2016/11/10.
// Copyright © 2016年 setMinami Software Lab. All rights reserved.
//
#ifndef Bridging_Header_h
#define Bridging_Header_h
#import <CommonCrypto/CommonCrypto.h>
#endif /* Bridging_Header_h */