【发布时间】:2017-03-07 18:51:12
【问题描述】:
我有一个小函数,它接受一个字符串并返回它的 MD5 哈希值。问题是,它需要一个 UTF8 字符串,我需要它来计算用 iso-8859-1 (~ansi) 编码的字节数组的哈希值。
如何更改以下代码以接受字符的字节数组,然后返回其散列值?
static func md5(_ string: String) -> String {
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
}
棘手的部分是 CC_MD5_Update 调用。谢谢。
【问题讨论】: