Я пишу приложение для Mac. Мне нужен код, который генерирует хэш из строки. Мне нужно создать эти хэши:Хеши в какао и цель-C
- MD2
- MD4
- MD5
- SHA-0
- SHA-1
Как я могу это сделать? Спасибо.
Я пишу приложение для Mac. Мне нужен код, который генерирует хэш из строки. Мне нужно создать эти хэши:Хеши в какао и цель-C
Как я могу это сделать? Спасибо.
CommonCrypto (который является частью libsystem на Mac OS X) предоставляет все в вашем списке, кроме SHA-0.
Вам действительно нужен SHA-0? (Если у вас нет устаревших данных с использованием SHA-0, вы не должны начинать использовать его сейчас.)
Поскольку Objective-C является надмножеством C, вы можете использовать стандартные библиотеки OpenSSL на основе C для этого. Зайдите в EVP_DigestInit man page, чтобы начать. По сути, вы вызовете EVP_DigestInit
, чтобы начать делать хэш, а затем читать данные в нем, используя EVP_DigestUpdate
, пока вы не прочитаете все.
OpenSSL поставляется с Mac OS X, поэтому вы можете просто включить его заголовки. .: например
#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <openssl/bio.h>
The OpenSSL API является простым C, но вы можете обернуть вещи, которые нужно в классах Obj-C. (Я уверен, что вокруг уже есть некоторые обертки).
Посмотрите в конце этого блога, чтобы начать работу: http://sigpipe.macromates.com/2004/09/05/using-openssl-for-license-keys/
В статье использует OpenSSL для генерации лицензионных ключей для схемы защиты от копирования, но он предлагает инструкции о том, как использовать OpenSSL на Mac OS X.
Я написал этот пост в моем блоге:
http://cocoawithlove.com/2009/07/hashvalue-object-for-holding-md5-and.html
, который показывает класс, который создает MD5 и sHA256 хэш из произвольных данных. Он использует функции CC_MD5 и CC_SHA256 CommonCrypto для выполнения фактического хэширования. Вы можете легко следовать тому же подходу, чтобы включить дополнительные методы, которые вычисляют все хеши, которые вы указали.
Retag: Я добавил «openssl» и «c». –