有没有人很难从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,但没有任何帮助。有什么想法吗?谢谢。
发布于 2019-03-08 05:19:40
PBKDF2不是摘要。您不能比较这两个值。
不管怎样,这就是你计算散列的方式:https://github.com/krzyzanowskim/CryptoSwift#calculate-digest,基本上:
let hash = bytes.sha256()在PHP中,hash('sha256',$longPassword,false);输出的是小写的十六进制,所以你需要这样的代码:
let hash = bytes.sha256().toHexString()https://stackoverflow.com/questions/55030518
复制相似问题