Как я могу изменить sha1 в кодировке base64 в swift? - PullRequest
0 голосов
/ 23 января 2020

Мне нужно преобразовать строку в sha1, а затем использовать base64. Просто base64_encode(sha1(My_String)). Я хочу сделать это, но я не могу исправить это правильно. Я могу преобразовать SHA1 с этим кодом: let firstTry = SHA1.hash(from: "call"), но когда я пытаюсь сделать это в base64, он выдал ошибку, которая, скажем, строка не разрешена. Как я могу конвертировать base64? Спасибо за ваше внимание.

Я пытаюсь преобразовать c [все] в sha1 с этим кодом:

let str = "c[all]"
let den3 = str.sha1()

его работает хорошо и вернусь правильно, что: 0fee061faab109e27b75010f2f1a0d8258bab7c5

И когда я добавляю let den3 = str.sha1().toBase64(), я получаю MGZlZTA2MWZhYWIxMDllMjdiNzUwMTBmMmYxYTBkODI1OGJhYjdjNQ == на самом деле мне нужно получить это: D + 4GH6qxCeJ7dQEPLxoNgli6t1 * *22?

Вот мои расширения

extension String {
    func sha1() -> String {
        let data = Data(self.utf8)
        var digest = [UInt8](repeating: 0, count:Int(CC_SHA1_DIGEST_LENGTH))
        data.withUnsafeBytes {
            _ = CC_SHA1($0.baseAddress, CC_LONG(data.count), &digest)
        }
        let hexBytes = digest.map { String(format: "%02hhx", $0) }
        return hexBytes.joined()
    }

    func toBase64() -> String {
        return Data(self.utf8).base64EncodedString()
    }
}

1 Ответ

0 голосов
/ 23 января 2020

Вы можете использовать CryptoKit вот так

import CryptoKit

let str: String = "Hello, world!"

//Get the SHA1 hash
let hash = Insecure.SHA1.hash(data: str.data(using: .utf8)!)

//Get string representation of the hash (matches hash.description)
let hashedString = hash.map({ String(format: "%02hhx", $0) }).joined()

//Get the base64 string
let encodedString = hashedString.data(using: .utf8)!.base64EncodedString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...