Хеш Swift SHA256 не соответствует хешу PHP SHA256 - PullRequest
0 голосов
/ 06 марта 2019

Кто-нибудь сталкивался с трудностями при получении результатов хеширования из 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);

Я пытался изменить логический флаг на true в хэш-функции PHP, но это не помогло. Есть идеи? Спасибо.

1 Ответ

2 голосов
/ 08 марта 2019

PBKDF2 не является дайджестом. Вы не можете сравнить эти два значения.

В любом случае, вот как вы вычисляете хеш: https://github.com/krzyzanowskim/CryptoSwift#calculate-digest, в основном:

let hash = bytes.sha256()

в PHP hash('sha256',$longPassword,false); выводит строчные буквы, поэтому вам нужно что-то вроде этого:

let hash = bytes.sha256().toHexString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...