CryptoSwift - дайджест SHA256 конвертируется в BASE64 - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь преобразовать следующую терминальную команду в 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'

Спасибо.

...