Я новичок в алгоритмах шифрования и хэширования.Мне нужно хешировать строку с секретным ключом, используя алгоритм SHA-256.Я перепробовал несколько ссылок из переполнения стека, а также некоторые другие учебные пособия. Используя эти ссылки, вывод, полученный в iOS, отличается от вывода, получаемого в Android.Я использовал одну и ту же строку и секретный ключ на обеих платформах.
Фрагмент кода Android -
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(secret_key);
byte[] channelKeyLong = digest.digest(message.getBytes("utf-8"));
INPUT -
secret_key = "35285324354d562c245b031232115124372e5242394f51301f62224e1e432910"
message = "Guest"
OUTPUT = "99D71664BD5A35E0185C020BACB709DEB24A81555E275CA9328F8CB4E6F186C3
"
IOS код snipet -
extension String {
func generateSHA256(key: String) -> String {
var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256), key, key.count, self, self.count, &digest)
let data = Data(bytes: digest)
return data.map { String(format: "%02hhx", $0) }.joined()
}
}
ВХОД -
secret_key = "35285324354d562c245b031232115124372e5242394f51301f62224e1e432910"
message = "Guest"
РЕАЛИЗАЦИЯ -> OUTPUT = message.generateSHA256 (secret_key)
`OUTPUT = "944a37b9768970c5da4f35295008470603391223a05d2b17eed668f1678d447c"'
Пожалуйста, предложите любой другой метод, который я могу реализовать в iOS, чтобы получить тот же вывод, что и полученный в Android.