Swift SHA256哈希与PHP SHA256哈希不匹配

问题描述 投票:0回答:1

有没有人难以从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但它没有帮助。有任何想法吗?谢谢。

php swift hash
1个回答
2
投票

PBKDF2不是摘要。你无法比较这两个值。

无论如何,这是你如何计算哈希:https://github.com/krzyzanowskim/CryptoSwift#calculate-digest,基本上:

let hash = bytes.sha256()

在PHP中hash('sha256',$longPassword,false);输出小写的六角形,所以你需要这样的东西:

let hash = bytes.sha256().toHexString()
© www.soinside.com 2019 - 2024. All rights reserved.