Мне нужно преобразовать строку в 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()
}
}