Проверка по телефону кода, сгенерированного на сервере, отправлено на электронную почту с помощью PHP и SwiftIOS

Программируем под IOS
Ответить
Anonymous
 Проверка по телефону кода, сгенерированного на сервере, отправлено на электронную почту с помощью PHP и Swift

Сообщение Anonymous »

Для аутентификации входа в систему я хотел бы, чтобы пользователи iosapp ввели код, отправленный с сервера по электронной почте или тексту. Зашифровал код в приложение, расшифровывает его, используя ту же схему алгоритма, и если фраза является правильной, называйте этот успех. Тем не менее, код, который LLM дал мне сделать это, не работает, и когда я смотрю на код, я не вижу, как он должен работать. Спасибо за предложения.

Код: Выделить всё

// Create code from passphrase..In practice passphrase should be user-dependent such as name+id

$passphrase = "testing";
function createCode($passphrase)
{
$code = rand(100000, 999999); // generate 6-digit code
$saltedCode = hash_hmac('sha1', $code, $passphrase); // salt code with phrase
$encodedCode = substr($saltedCode, 0, 6); // take first 6 characters of hash
return $encodedCode;
}

// SEND THIS TO USER WHO THEN HAS TO ENTER INTO APP
// In app
< /code>
Swift Decode < /p>
let passphrase = "testing"
func verifyCode(_ code: String, passphrase: String) -> Bool {
let hashedCode = hashHMAC(code, key: passphrase)
let encodedCode = String(hashedCode.prefix(6))
return code == encodedCode
}

func hashHMAC(_ input: String, key: String) -> String {
let algo = CCHmacAlgorithm(kCCHmacAlgSHA1)
let str = input.cString(using: .utf8)
let keyStr = key.cString(using: .utf8)
var digest = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH))
if let mystr = str, let myKeyStr = keyStr {
CCHmac(algo, myKeyStr, strlen(myKeyStr), str, strlen(mystr), &digest)
}
return Data(bytes: digest, count: digest.count).base64EncodedString()
}
Происходит то, что строка, возвращаемая hashhmac , всегда отличается от введенного кода, поэтому успеха никогда не существует. Например, я получаю Code = '7A2061' и после вступления в App: encodedCode = "rbxdrm", которые, конечно, отличаются, поэтому они не совпадают.
>

Подробнее здесь: https://stackoverflow.com/questions/796 ... php-and-sw
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»