任何人都知道如何在swift中重现PHP哈希方法哈希('SHA512',$ value,true)?我尝试使用此代码使用CommonCrypto C库:
extension String {
func digest(length:Int32, gen:(data: UnsafePointer<Void>, len: CC_LONG, md: UnsafeMutablePointer<UInt8>) -> UnsafeMutablePointer<UInt8>) -> String {
var cStr = [UInt8](self.utf8)
var result = [UInt8](count:Int(length), repeatedValue:0)
gen(data: &cStr, len: CC_LONG(cStr.count), md: &result)
let output = NSMutableString(capacity:Int(length))
for r in result {
output.appendFormat("%02x", r)
}
return String(output)
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
var digest = salted.digest(CC_SHA512_DIGEST_LENGTH, gen: {(data, len, md) in CC_SHA512(data,len,md)})
Run Code Online (Sandbox Code Playgroud)
但我没有得到正确的输出
编辑:
我有一些PHP代码:
echo base64_encode(hash('sha512', '8yOrBmkd', true)); // output: rlltLWeWaQCrfNTYMa0CcIs0mfLoHGAynrd+d8H65+rGAzHS/BSWsumwSmcxF9aAG9TIzXx+HOjArPyLL3herg==
Run Code Online (Sandbox Code Playgroud)
我希望我的快速代码能够输出相同的代码.Base64编码没问题:
let utf8str = input.dataUsingEncoding(NSUTF8StringEncoding)!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
let base64Encoded = …Run Code Online (Sandbox Code Playgroud)