Я пытаюсь преобразовать следующую терминальную команду в Swift:
printf "hello" | openssl dgst -sha256 | openssl enc -e -base64 | tr -d '\n'
Пока у меня есть это, но возвращает мне другой результат:
import Foundation
import CryptoKit
extension Digest {
var bytes: [UInt8] { Array(makeIterator()) }
var data: Data { Data(bytes) }
var hexStr: String {
bytes.map { String(format: "%02X", $0) }.joined()
}
}
extension String {
// Encode a String to Base64
func toBase64() -> String {
return Data(self.utf8).base64EncodedString()
}
// Decode a String from Base64. Returns nil if unsuccessful.
func fromBase64() -> String? {
guard let data = Data(base64Encoded: self) else { return nil }
return String(data: data, encoding: .utf8)
}
}
guard let data = "hello".data(using: .utf8) else { return }
let digest = SHA256.hash(data: data)
print(digest.data)
print(digest.hexStr.toBase64())
Второй вопрос Вот как я могу добавить «ключ» в этой строке: let digest = SHA256.hash(data: data)
, если я хочу получить этот вывод: openssl dgst -sha256 -sign "secretKey" | openssl enc -e -base64 | tr -d '\n'
Спасибо.