有没有人难以从swift获取哈希结果以匹配PHP中相同的输入哈希结果?这是我的快速代码:
let longPassword = myTextField.text!+email
let pword: Array<UInt8> = Array(longPassword.utf8)
let keyString = self.runHashOnPassword(text: pword, salt: Array(salt.utf8))
func runHashOnPassword(text: Array<UInt8>, salt: Array<UInt8>) -> String {
do {
let key = try PKCS5.PBKDF2(password: text,salt: salt, iterations: 4096, variant: .sha256).calculate()
let jEncoder = JSONEncoder.init()
let byteString = try jEncoder.encode(key)
return byteString.base64EncodedString()
} catch {
return ""
}
}
这是我的PHP代码:
$longPassword = $pword . $email . $salt;
$newHash = hash('sha256',$longPassword,false);
我已经尝试在PHP哈希函数中将boolean标志更改为true但它没有帮助。有任何想法吗?谢谢。
PBKDF2
不是摘要。你无法比较这两个值。
无论如何,这是你如何计算哈希:https://github.com/krzyzanowskim/CryptoSwift#calculate-digest,基本上:
let hash = bytes.sha256()
在PHP中hash('sha256',$longPassword,false);
输出小写的六角形,所以你需要这样的东西:
let hash = bytes.sha256().toHexString()